From nkraft Fri, 4 Jun 93 13:08:34 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 4 Jun 93 13:08:34 PST
Date: Fri, 4 Jun 93 13:08:34 PST
Message-Id: <9306042108.AA00dtk@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: crash!amigae
Subject: Aminet sites for AmigaE

Some of you have had trouble ftp'ing into merlin.etsu.edu. Here is a list
of Aminet sites (all mirrors of amiga.physik.unizh.ch) which carry the
latest version of the AmigaE compiler:

Switzerland  amiga.physik.unizh.ch  130.60.80.80    pub/aminet/dev/lang
Switzerland  litamiga.epfl.ch       128.178.151.32  pub/aminet/dev/lang
Scandinavia  ftp.luth.se            130.240.18.2    pub/aminet/dev/lang
Germany      ftp.uni-kl.de          131.246.9.95    pub/aminet/dev/lang
Germany      ftp.uni-erlangen.de    131.188.1.43    pub/aminet/dev/lang
Germany      ftp.cs.tu-berlin.de    130.149.17.7    pub/aminet/dev/lang
Germany      ftp.th-darmstadt.de    130.83.55.75    pub/aminet/dev/lang
Germany      ftp.uni-paderborn.de   131.234.2.32    pub/aminet/dev/lang
USA          ftp.wustl.edu          128.252.135.4   pub/aminet/dev/lang
USA          merlin.etsu.edu        192.43.199.20   pub/aminet/dev/lang
USA          oes.orst.edu           128.193.124.2   pub/aminet/dev/lang
Australia    splat.aarnet.edu.au    192.107.107.6   pub/aminet/dev/lang

Please be aware that amiga.physik.unizh.ch has experienced such a 
volume of ftp traffic that they have limited annonymous logins to
a very small number (usually 3). The other sites are usually a
bit slower. 

Have fun!

Norm.


----------------------------------------------------------------------------
Norman Kraft                            INET  : nkraft@ucsd.edu (work)
Peptide-T Clinical Trial                or try: nkraft@bkhouse.cts.com (home)
HIV Neurobehavioral Research Center     UUCP  : ucsd!nkraft
Dept of Psychiatry, School of Medicine  
University of California, San Diego          Usual disclaimers...
----------------------------------------------------------------------------

From crash!minyos.xx.rmit.OZ.AU!s924723 Fri, 4 Jun 93 19:30:38 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 4 Jun 93 19:30:38 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o1nL9-0000xaC; Fri, 4 Jun 93 18:46 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA03114
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sat, 5 Jun 1993 11:46:29 +1000
Received: by minyos.xx.rmit.oz.au
Date: Sat, 5 Jun 93 11:46:24 EST
Message-Id: <9306050146.5790@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 



Does anyone know a way/function to print out floats? Is there a procedure in
either AmigaE itself, or ks2.04?

A hint.. if you've got ks2.04, use Fgets() instead of ReadStr(). ReadStr()
is something like 30 times slower! (Replacing ReadStr() with Fgets() in EPP
makes it a lot more usable! :)

Son Le


From crash!golum.riv.csu.edu.au!geoff Sat, 5 Jun 93 01:42:45 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 5 Jun 93 01:42:45 PST
Received: from golum.riv.csu.edu.au by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o1t4X-0000nnC; Sat, 5 Jun 93 00:53 PDT
Received: by golum.riv.csu.edu.au (5.65/DEC-Ultrix/4.3)
	id AA14329; Sat, 5 Jun 1993 17:55:43 +1000
Message-Id: <9306050755.AA14329@golum.riv.csu.edu.au>
Reply-To: gfellows@csu.edu.au
Organisation: Charles Sturt University-Riverina, Australia
Date: Sat, 05 Jun 93 17:55:43 -0800
X-Mts: smtp
From: Geoff Fellows (CSU-R InfoStud) <geoff@golum.riv.csu.edu.au>
To: amigae@bkhouse.cts.com
Subject: Amiga E mailing list

Norman,
	Please add me to the Amiga E discussion list.  Allow my own
postings back with other list mailings.

Regards,
Geoff gfellows@csu.edu.au

From crash!Mail.SWIP.net!z92!n901!f607!p3!Roger_Martensson%BadNet Sun, 6 Jun 93 19:47:00 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 6 Jun 93 19:47:00 PST
Received: from mail.swip.net by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2WBZ-0000GqC; Sun, 6 Jun 93 18:39 PDT
Received: by mail.swip.net (5.65c8-/1.2)
	id AA22156; Mon, 7 Jun 1993 03:39:39 +0200
Received: by piraya.bad.se (1.65/waf)
	via UUCP; Mon, 07 Jun 93 02:37:44 1
	for amigae@bkhouse.cts.com
Received: by f1.n901.z92.badnet.bad.se (0.0.1 BA Datasystem/3C)
	id AA25846; Mon,  7 Jun 93 02:37:42 +0200
Date: Sat,  5 Jun 93 18:18:18 +0200
Message-Id: <OD.6badnetOA92-901-607p3_A46E5CE1@piraya.bad.se>
In-Reply-To: <C7zIuM.DHv@ucdavis.edu>
Fidonet-Flags: private
Reply-To: Roger_Martensson@p3.nola.bbs.bad.se (Roger Martensson)
From: Roger_Martensson@p3.nola.bbs.bad.se (Roger Martensson)
To: amigae@bkhouse.cts.com
Subject: Re: [USE_COMP.SAM.ANNOUNCE]Announcing: The AmigaE Mailing List


Hi,

I would like to be in the mailinglist for AmigaE.
And I don't want to have my own postings back.

Greetings,
/Rm - InterNet: Roger_Martensson@nola.bbs.bad.se

From crash!Mail.SWIP.net!z92!n901!f607!p3!Roger_Martensson%BadNet Sun, 6 Jun 93 19:47:02 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 6 Jun 93 19:47:02 PST
Received: from mail.swip.net by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2WBd-0000GqC; Sun, 6 Jun 93 18:39 PDT
Received: by mail.swip.net (5.65c8-/1.2)
	id AA22167; Mon, 7 Jun 1993 03:39:42 +0200
Received: by piraya.bad.se (1.65/waf)
	via UUCP; Mon, 07 Jun 93 02:38:07 1
	for amigae@bkhouse.cts.com
Received: by f1.n901.z92.badnet.bad.se (0.0.1 BA Datasystem/3C)
	id AA25858; Mon,  7 Jun 93 02:38:07 +0200
Date: Sat,  5 Jun 93 18:18:18 +0200
Message-Id: <OD.6badnetOA92-901-607p3_A46E5CE1@piraya.bad.se>
In-Reply-To: <C7zIuM.DHv@ucdavis.edu>
Fidonet-Flags: private
Reply-To: Roger_Martensson@p3.nola.bbs.bad.se (Roger Martensson)
From: Roger_Martensson@p3.nola.bbs.bad.se (Roger Martensson)
To: amigae@bkhouse.cts.com
Subject: Re: [USE_COMP.SAM.ANNOUNCE]Announcing: The AmigaE Mailing List


Hi,

I would like to be in the mailinglist for AmigaE.
And I don't want to have my own postings back.

Greetings,
/Rm - InterNet: Roger_Martensson@nola.bbs.bad.se

From crash!kirk.safb.af.mil!BWILLS Mon, 7 Jun 93 08:07:44 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 08:07:44 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2hGE-000038C; Mon, 7 Jun 93 06:29 PDT
Message-Id: <m0o2hGE-000038C@crash.cts.com>
Date: 7 Jun 93 08:26:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Fishin'

Hi everyone.  I'm a new subscriber, been messing around with E for a couple
months, now.  Just fishing to see who is out there.  Recently I've been playing
with sprites, and I've been looking for some SIMPLE examples of bobs, but my
search has been fruitless.  I'd appreciate any code, E or C, that demonstrates
programming bobs.  Please send source and inquiries to bwills@kirk.safb.af.mil.
Also, look for epp013b.lha, an E Preprocessor (warning:  don't use older
versions, they're buggy.)  Later.  -- Barry

From nkraft Mon, 7 Jun 93 08:17:18 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 08:17:18 PST
Date: Mon, 7 Jun 93 08:17:18 PST
Message-Id: <9306071617.AA00dzy@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: crash!amigae
Subject: How do you use AmigaE?


Well, since list traffic seems off to a slow start, I thought perhaps
we can get the ball rolling by getting a better feel for how we are
using AmigaE. This may give us an idea of what sorts of expertise
we have available on the list, and serve as an introduction of sorts.

I suppose I can start by discussing my own uses:

Aside from using AmigaE to handle this mailing list, I have a number
of both personal and commercial projects under way in E. Most of
these are in the area of database management, though I am also 
porting some other applications I wrote in C to E. Among these is
a text search package (commercial), and a relational DBMS (also
eventually commercial) and an Amiga interface to a medical 
database system (also commercial). I have a text processesor on the 
drawing board, and I've written quite a few small programs to do 
everything from handle system tasks on Ami, to displaying just how 
easy it is to do great graphics in E. I'm also in the process of
writing several educationally oriented programs in E to aid graduate
level students in managing large amounts of information that must
be committed to memory (I'm one of those graduate students...). These
will be shareware, if not public domain, and I'll finish them over
the course of this summer.

I find that I'm using E more and more, in situations where I would
have used C just a year ago. The development cycle is shorter,
the code is more readable, there is less source code needed to
do the same task, and compilation speed is incredible. Given a
source level debugger, and a few other tools, AmigaE eventually will
just about drive C off my hard drive. As much as I've enjoyed using
Dice, I can't say I'll be sorry to see it go. ;)

Norm.


----------------------------------------------------------------------------
Norman Kraft                            INET  : nkraft@ucsd.edu (work)
Peptide-T Clinical Trial                or try: nkraft@bkhouse.cts.com (home)
HIV Neurobehavioral Research Center     UUCP  : ucsd!nkraft
Dept of Psychiatry, School of Medicine  
University of California, San Diego          Usual disclaimers...
----------------------------------------------------------------------------

From crash!mars.let.uva.nl!wouter Mon, 7 Jun 93 09:53:01 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 09:53:01 PST
Received: from mars.let.uva.nl by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2jnO-0000SkC; Mon, 7 Jun 93 09:11 PDT
Received: by mars.let.uva.nl id AA21635
  (5.65c/IDA-1.4.4 for amigae@bkhouse.cts.com); Mon, 7 Jun 1993 18:14:34 +0200
Return-Path: <wouter@mars.let.uva.nl>
Date: Mon, 7 Jun 1993 18:14:34 +0200
Message-Id: <199306071614.AA21635@mars.let.uva.nl>
X-Organisation: Department of Computational Linguistics,
                University of Amsterdam
                Spuistraat 134, 1012 VB Amsterdam, The Netherlands
From: Wouter van Oortmerssen <wouter@mars.let.uva.nl>
To: amigae@bkhouse.cts.com
Subject: 

>> 
>> Does anyone know a way/function to print out floats? Is there a procedure in
>> either AmigaE itself, or ks2.04?
 
since E doesn't really support floats in 2.1b, there are no support
functions for it either, but for now, this works:
 
PROC writeflt(n)
  WriteF('\d.\z\d[4]\n',SpFix(n),SpFix(SpMul(SpAbs(SpSub(SpFlt(SpFix(n)),n)),100
0.)))
ENDPROC
 
vary the "[4]" and "10000." for different layouts.
 
>> A hint.. if you've got ks2.04, use Fgets() instead of ReadStr(). ReadStr()
>> is something like 30 times slower! (Replacing ReadStr() with Fgets() in EPP
>> makes it a lot more usable! :)
 
ReadStr() is unbuffered IO and Fgets() is buffered... You can't
always exchange them that easily as with EPP.
 
>> Son Le
 
Wouter.

From crash!cbmehq.uucp.commodore.com!cbmnor!cnaas!naasc Mon, 7 Jun 93 12:29:26 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 12:29:26 PST
Received: from cbmmail.commodore.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2lLO-0000bUC; Mon, 7 Jun 93 10:50 PDT
Received: from cbmvax.cbm.commodore.com by cbmmail.commodore.com (4.1/SMI-4.1)
	id AA00366; Mon, 7 Jun 93 13:50:30 EDT
Received: by cbmvax.cbm.commodore.com
	(5.57/UUCP-Project/Commodore - Server Version 01/25/93)
	id AA13307; Mon, 7 Jun 93 13:50:36 EDT
Received: by cbmehq.esco.so.commodore.com; Mon,  7 Jun 1993 18:56 MET
Received: by cbmnor.no.so.commodore.com; Mon,  7 Jun 1993 18:56 MET
Received: by cnaas.adsp.sub.org (V1.16/Amiga)
	id AA00352; Sun, 6 Jun 93 20:18:24 GMT
Date: Sun, 6 Jun 93 20:18:24 GMT
Message-Id: <9306062018.AA00351@cnaas.adsp.sub.org>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.11)
Organization: SSD
Reply-To: cbmehq!cbmnor!cnaas!naasc@cbmvax.cbm.commodore.com
X-Charset: iso-8859-1
Content-Type: text
Content-Length: 184
From: naasc@cnaas.adsp.sub.org (Christopher Naas) (Christopher Naas)
To: amigae@bkhouse.cts.com
Subject: E miling list


I'd like to be on the Amiga E mailing list.





   __ __
  /_ /_ /\  Christopher Naas            My opinions only,  not
 __/__//_/ naasc@cnaas.adsp.sub.org    those of my co workers

From bkhouse!nkraft Mon, 7 Jun 93 13:49:44 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 13:49:44 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00e8o; Mon, 7 Jun 93 13:02:37 PST
Date: Mon, 7 Jun 93 13:02:37 PST
Message-Id: <9306072102.AA00e8n@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.cts.com
Subject: Re: How do you use AmigaE? (fwd)

Well, I have yet to use E, but will be looking into it heavily over the summer.
I will be learning C too, and I figure that E will help along those lines too.

Some of the things I'd like to do in E:

write a program to interpret different signals comming in from the JS ports 
and interpret them as macros in all programs.

Write some specialized database programs for my parents business (so they'll 
have to buy me a better Amiga!)

Make a graphical system for my hard drive's installation procedures (I have a
Spartan Do-it-yourselfer controller.)

And so on......

--Mike Kopack

From bkhouse!nkraft Mon, 7 Jun 93 13:49:46 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 13:49:46 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00e8t; Mon, 7 Jun 93 13:06:05 PST
Date: Mon, 7 Jun 93 13:06:05 PST
Message-Id: <9306072106.AA00e8s@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.cts.com
Subject: Replying to AmigaE list messages.

I've just noticed today that the Reply-To header field is not always
being set correctly in list messages to read amigae@bkhouse.cts.com.
Please, if you are replying to list messages, be sure that the To: 
field in your response is set to 'amigae@bkhouse.cts.com'. Otherwise, 
your response only goes to the person you are responding to, and
not to the list at large.

Sorry for the temporary inconvenience. I'm working out these little
bugs one by one.

Norm.


----------------------------------------------------------------------------
Norman Kraft                            INET  : nkraft@ucsd.edu (work)
Peptide-T Clinical Trial                or try: nkraft@bkhouse.cts.com (home)
HIV Neurobehavioral Research Center     UUCP  : ucsd!nkraft
Dept of Psychiatry, School of Medicine  
University of California, San Diego          Usual disclaimers...
----------------------------------------------------------------------------

From bkhouse!nkraft Mon, 7 Jun 93 13:49:48 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 13:49:48 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00e8y; Mon, 7 Jun 93 13:07:30 PST
Date: Mon, 7 Jun 93 13:07:30 PST
Message-Id: <9306072107.AA00e8x@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.cts.com
Subject: Re: How do you use AmigaE?

This was originally written by Mike Kopack, and intended for the list,
but was unintentionally mailed to me.

[-------------------- text of forwarded message follows --------------------]

Well, I have yet to use E, but will be looking into it heavily over the summer.
I will be learning C too, and I figure that E will help along those lines too.

Some of the things I'd like to do in E:

write a program to interpret different signals comming in from the JS ports 
and interpret them as macros in all programs.

Write some specialized database programs for my parents business (so they'll 
have to buy me a better Amiga!)

Make a graphical system for my hard drive's installation procedures (I have a
Spartan Do-it-yourselfer controller.)

And so on......

--Mike Kopack


[------------------------- end of forwarded message ------------------------]


----------------------------------------------------------------------------
Norman Kraft                            INET  : nkraft@ucsd.edu (work)
Peptide-T Clinical Trial                or try: nkraft@bkhouse.cts.com (home)
HIV Neurobehavioral Research Center     UUCP  : ucsd!nkraft
Dept of Psychiatry, School of Medicine  
University of California, San Diego          Usual disclaimers...
----------------------------------------------------------------------------

From bkhouse!nkraft Mon, 7 Jun 93 13:49:50 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 13:49:50 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00e93; Mon, 7 Jun 93 13:08:59 PST
Date: Mon, 7 Jun 93 13:08:59 PST
Message-Id: <9306072108.AA00e92@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.cts.com
Subject: Re:  How do you use AmigaE? (fwd)

On Jun 7, Perry Heard accidentally sent this to me instead of the amigae
list:

[-------------------- text of forwarded message follows --------------------]

	How do I use AmigaE?  Well, let me see.  So far, I've just 
played around with simple stuff i.e. opening screens, drawing lines, etc.
I've just been tweaking the knobs.  I had been trying to convert a project
I was working on from C to E, but the program used floating point
arithmetic, and although E supported the necessary math modules I found I
couldn't print floating point numbers with the WriteF() command.  I gave
up after numerous tries and after I read in the manual where it stated
that the version I had supported only 68000 code and had no support for
the 68881/882  math coprocessors (I have an A3000w/68882).  The last thing
I did with E was playing around with the inline assembly.  I had never 
gotten around to learning 68000 code.  
	Don't get me wrong, though.  I think E is a great language and 
the learning curve is great.  I was doing screens, etc. in less than
an hour -- days with SAS

	If anybody has any sample E programs which demonstrate 
printing floating point numbers (not the pi program example) I would
appreciate the source.  Maybe the '030/040/882 version will be out soon!

-Perry



----------------------------------------------------------------------------
Norman Kraft                            INET  : nkraft@ucsd.edu (work)
Peptide-T Clinical Trial                or try: nkraft@bkhouse.cts.com (home)
HIV Neurobehavioral Research Center     UUCP  : ucsd!nkraft
Dept of Psychiatry, School of Medicine  
University of California, San Diego          Usual disclaimers...
----------------------------------------------------------------------------

From crash!kirk.safb.af.mil!BWILLS Mon, 7 Jun 93 13:52:48 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 13:52:48 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2nd9-0000lFC; Mon, 7 Jun 93 13:17 PDT
Message-Id: <m0o2nd9-0000lFC@crash.cts.com>
Date: 7 Jun 93 15:15:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re: [Untitled reply (from Wouter)]

>> A hint.. if you've got ks2.04, use Fgets() instead of ReadStr(). ReadStr()
>> is something like 30 times slower! (Replacing ReadStr() with Fgets() in EPP
>> makes it a lot more usable! :)
 
>ReadStr() is unbuffered IO and Fgets() is buffered... You can't
>always exchange them that easily as with EPP.
 
>> Son Le
 
>Wouter.

This is true...except that I don't have KS2.0, so I couldn't use Fgets().  It
sounds like you are using an obsolete version of EPP, Son Le.  In EPP V0.13b I 
have replaced all my ReadStr()'s with Read()'s and a juggling act, and this has
significantly increased the rate of input.  I am interested in hearing how 
Read() compares with Fgets().  (BTW, epp013b.lha was uploaded to Aminet some-
time last week.  It fixes some potentially serious bugs, so ditch the old
versions!) 

Wouter couldn't be more right about the difficulty of exchanging ReadStr() and
Fgets() in most cases, though.  How did you fare, Son Le?  I had a serious 
headache from my bout with it.

I'm looking to getting OS2.1 soon.  Then I'll be armed an dangerous!  But I will
continue to support earlier versions of KS as long as it's possible/feasible.

It's great being able to interact with other E programmers:  thanks for this
list, Norman!

-- Barry

From crash!kirk.safb.af.mil!BWILLS Mon, 7 Jun 93 13:52:58 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 13:52:58 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2o5c-0000snC; Mon, 7 Jun 93 13:46 PDT
Message-Id: <m0o2o5c-0000snC@crash.cts.com>
Date: 7 Jun 93 15:43:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re: my previous blunder

>Wouter couldn't be more right about the difficulty of exchanging ReadStr() and
>Fgets() in most cases, though.  How did you fare, Son Le?  I had a serious 

Did I really say that?  Sorry, I should pay more attention to what I'm writing.
Disregard that comment.  What problem(s) would be involved in exchanging 
Fgets() with ReadStr()?  They seem pretty compatible.

-- Barry

From crash!MSUVX1.MEMST.EDU!UMLANGSTON Mon, 7 Jun 93 15:11:53 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 15:11:53 PST
Received: from msuvx1.memst.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2oaA-00006YC; Mon, 7 Jun 93 14:18 PDT
Received: from MSUVX1.MEMST.EDU by MSUVX1.MEMST.EDU (PMDF #3869 ) id
 <01GZ3PSB3DKWAC4H2I@MSUVX1.MEMST.EDU>; Mon, 7 Jun 1993 16:20:32 CST
Date: 07 Jun 1993 16:20:32 -0600 (CST)
Message-id: <01GZ3PSB3DKYAC4H2I@MSUVX1.MEMST.EDU>
X-VMS-To: IN%"amigae@bkhouse.cts.com"
MIME-version: 1.0
Content-type: TEXT/PLAIN; CHARSET=US-ASCII
Content-transfer-encoding: 7BIT
From: UMLANGSTON@MSUVX1.MEMST.EDU
To: amigae@bkhouse.cts.com
Subject: Re:  How do you use Amiga E?



  Well, now that I've put it on my new 1200HD (as opposed to my poor old
500 I just sold), I've been working on artificial life programs, mostly.
I mainly work in cognitive modelling/learning research, but ALife is a hobby
of mine.  Right now I'm working on a truly multitasking version of TIERRA
(for those of you not familiar with TIERRA, it's a socio-evolutionary
simulation of program evolution)

  Besides that, I also use E to write helpful cli commands and the like.  
I think I'll write some background demons this weekend, in fact.

By the way, I think Wouter deserves an enormous round of applause...E is
incredible (however, I can't get it to run arrays of any significant size...
say, oh, 10,000x10,000)

BTW pt.2:  I was serious about the array comment...just realized it may have
sounded sarcastic...but I need to do matrix manipulations at this magnitude 
for some of the ALife work I do...that, and enormous arrays of structures
fail as well...also, arrays of structures containing arrays...)

-mark langston
institute for intelligent systems
department of psychology
memphis state university
memphis tn 38152

langston@memstvx1.memst.edu
umlangston@memstvx1.memst.edu
fugue@mindvox.phantom.com

From crash!East.Sun.COM!Michael.Soucy Mon, 7 Jun 93 15:12:15 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 15:12:15 PST
Received: from Sun.COM by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2pHd-0000vWC; Mon, 7 Jun 93 15:03 PDT
Received: from snail.Sun.COM (snail.Corp.Sun.COM) by Sun.COM (4.1/SMI-4.1)
	id AA19738; Mon, 7 Jun 93 15:00:09 PDT
Received: from East.Sun.COM by snail.Sun.COM (4.1/SMI-4.1)
	id AA27360; Mon, 7 Jun 93 14:58:55 PDT
Received: from turbo.East.Sun.COM by East.Sun.COM (4.1/SMI-4.1)
	id AA14446; Mon, 7 Jun 93 17:58:53 EDT
Received: from madness.East.Sun.COM by turbo.East.Sun.COM (4.1/SMI-4.1)
	id AA08438; Mon, 7 Jun 93 17:56:30 EDT
Received: by madness.East.Sun.COM (4.1/SMI-4.1)
	id AA01149; Mon, 7 Jun 93 18:05:26 EDT
Date: Mon, 7 Jun 93 18:05:26 EDT
Message-Id: <9306072205.AA01149@madness.East.Sun.COM>
Classification: Sun Proprietary: Internal Use Only
From: Michael.Soucy@East.Sun.COM (Michael Soucy - Sun USOPS CSU Test Engineering)
To: amigae@bkhouse.cts.com
Subject: Reading stuff


Hi folks,

I want to open a file and read it line by line and parse the information. I
want to create a program that shows statistics for my mail processor in the
bbs package I am running. It generates a logfile and I wanted a way to parse
the log to gather the information from all the areas that I am carrying to
show how much mail comes through daily/weekly/monthly. It would also aid in
getting an echo onto the backbone once I had this information. Any ideas? I
couldn't find anything that related to opening and reading textfiles and then
creating a new one (probably using a boolean and Lock function) with the info
I garnered from the log file. Any help will be appreciated (and mentioned in
the doc file!) once I get this started.

Mike

From crash!freenet.carleton.ca!ad047 Mon, 7 Jun 93 17:55:25 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 17:55:25 PST
Received: from freenet.carleton.ca by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2rmU-0000e0C; Mon, 7 Jun 93 17:43 PDT
Received: by freenet.carleton.ca (4.1/SMI-4.0)
	id AA25777; Mon, 7 Jun 93 20:42:28 EDT
Date: Mon, 7 Jun 93 20:42:28 EDT
Message-Id: <9306080042.AA25777@freenet.carleton.ca>
Reply-To: ad047@freenet.carleton.ca
From: ad047@freenet.carleton.ca (Stephane Costisella)
To: amigae@bkhouse.cts.com
Subject: VHS controled by E


I am building a (simple) VHS controler with an old joystick cable plugged
in the gameport. The camera pause on the VHS is plugged with the black and
yellow wires (this is the fire button). When I put together the camera pause
wires, the pause is off and the VHS is recording. And when two pause wires are
unconnected the pause is on. 

After that I've found this I decided to use the gameport.device to control
the pause of my VHS. I tried to find a way to do it and I didn't succedeed
yet (GURU!). So I need a routine that can connect or disconnect the two wires
via the joystick port. And if you guessed what it will do... A cheap single
frame controler for my ray-tracing animations. I need a good routine to load a
HAM Overscan interlace picture, a timer routine(+time & date), by the way I
tried the DateStamp() command and I allways get a GURU, and the more
important is the routine to control of the joystick port.

--
------------------------------------------------------------------------------
| Stephane Costisella, Hull Quebec, Canada  | Talk me about: //3D Raytracing |
| Freenet: ad047@freenet.carleton.ca        | ------------- // Programming   |
|___________________________________________|            \\//  CommodoreAMIGA|

From crash!kirk.safb.af.mil!BWILLS Mon, 7 Jun 93 19:55:20 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 19:55:20 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2sAW-0000WaC; Mon, 7 Jun 93 18:08 PDT
Message-Id: <m0o2sAW-0000WaC@crash.cts.com>
Date: 7 Jun 93 20:06:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  How do you use E?

I have used E in three small projects to date:

1.  Fill, a file-copy program primarily intended for use as a hard-drive-
to-floppy utility, which copies files using a best-fit algorithm so that
there is the least possible amount of wasted storage.  Files are left whole,
not split.  (This was distibuted before I realized there was such an avid
interest in E source code, so the source will be included with the next
release.  It may be especially interesting because it computes DOS overhead
on OFS floppies.  Let me know if you can't wait for the next release, I'll
mail it to the list.)  Latest version is 0.11b.

2.  EPP, which I've come to find has a few fans out there.  This E
Preprocessor lends modularity to E V2.1b.  I wrote it for me, and released
it to the net at the recommendation of a friend.  Latest version is 0.13b.

3.  Fish2HT, which is really a package of three easy-to-use utilities that
eat FishXrefs and FishCons and spit out Amigaguide docs.  Latest version is
0.10b.


What I have in the making:

1.  A simple game I'm using to teach myself Amiga graphics and animation.
That's why I need E or C code that shows bob usage.  With the books I have
I'd have to do a lot of digging.  I'd rather learn by example.  Sprites were
easy.  If anyone wants to see some sprite code, let me know.

2.  I'll probably come up with some E tools and examples along the way,
which I'll be posting.

I know not where I'll go from there...

-- Barry

From crash!East.Sun.COM!Michael.Soucy Mon, 7 Jun 93 21:52:06 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 21:52:06 PST
Received: from Sun.COM by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2uIJ-00003FC; Mon, 7 Jun 93 20:24 PDT
Received: from snail.Sun.COM (snail.Corp.Sun.COM) by Sun.COM (4.1/SMI-4.1)
	id AA05820; Mon, 7 Jun 93 20:23:38 PDT
Received: from East.Sun.COM by snail.Sun.COM (4.1/SMI-4.1)
	id AA11521; Mon, 7 Jun 93 20:23:20 PDT
Received: from turbo.East.Sun.COM by East.Sun.COM (4.1/SMI-4.1)
	id AA25326; Mon, 7 Jun 93 23:23:19 EDT
Received: from madness.East.Sun.COM by turbo.East.Sun.COM (4.1/SMI-4.1)
	id AA24774; Mon, 7 Jun 93 23:20:50 EDT
Received: by madness.East.Sun.COM (4.1/SMI-4.1)
	id AA01693; Mon, 7 Jun 93 23:29:46 EDT
Date: Mon, 7 Jun 93 23:29:46 EDT
Message-Id: <9306080329.AA01693@madness.East.Sun.COM>
Classification: Sun Proprietary: Internal Use Only
From: Michael.Soucy@East.Sun.COM (Michael Soucy - Sun USOPS CSU Test Engineering)
To: amigae@bkhouse.cts.com
Subject: reading/writing files in E



Hi folks,

I want to open a file and read it line by line and parse the information. I
want to create a program that shows statistics for my mail processor in the
bbs package I am running. It generates a logfile and I wanted a way to parse
the log to gather the information from all the areas that I am carrying to
show how much mail comes through daily/weekly/monthly. It would also aid in
getting an echo onto the backbone once I had this information. Any ideas? I
couldn't find anything that related to opening and reading textfiles and then
creating a new one (probably using a boolean and Lock function) with the info
I garnered from the log file. Any help will be appreciated (and mentioned in
the doc file!) once I get this started.

Mike

From crash!kirk.safb.af.mil!BWILLS Mon, 7 Jun 93 21:52:09 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 21:52:09 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2uLS-0002qlC; Mon, 7 Jun 93 20:27 PDT
Message-Id: <m0o2uLS-0002qlC@crash.cts.com>
Date: 7 Jun 93 22:25:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  Fishin'

In reply to message title "re:  Fishin'" from NES@delphi.com:
-------------------------------------------------------------------------------
>Hi, you stated in your last message that you are working with sprites.
>Is that under the E language?
>  Eric   (NES@delphi.com)

Hi, Eric.  Forgive my non-standard reply format.  I can't figure how to get my
vax to let me quote message text in reply.

Yes, I have one program that uses *one* simple sprite.  It opens a window with
some system gadgets on a custom screen (window and screen are opened via
intuition, not E), the sprite is displayed, and IDCMP_RAWKEY and 
IDCMP_CLOSEWINDOW messages are processed to manipulate the sprite.  It's really
basic, and with a few comments it might be clear enough to be instructive.  I 
didn't go any further because I decided sprites wouldn't serve my purpose.  So 
now I'm searching for bob info.  If you're interested I'll post the program
(after I document it); it's about 160 lines with alot of whitespace.  It's also
got some examples of allocating chip memory for the sprite, and initializing
some graphics structures using E lists.

-- Barry

From crash!minyos.xx.rmit.OZ.AU!s924723 Mon, 7 Jun 93 21:52:11 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 21:52:11 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2uLo-0002rDC; Mon, 7 Jun 93 20:27 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA27033
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Tue, 8 Jun 1993 13:27:39 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306080327.9462@minyos.xx.rmit.oz.au>
Date: Tue, 8 Jun 1993 13:27:23 +1000 (EST)
In-Reply-To: <199306071614.AA21635@mars.let.uva.nl> from "Wouter van Oortmerssen" at Jun 7, 93 06:14:34 pm
X-Mailer: ELM [version 2.4 PL21]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 1067
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: wouter@mars.let.uva.nl (Wouter van Oortmerssen)
Cc: amigae@bkhouse.cts.com
Subject: Re: your mailFgets() and EPP

> 
> >> 
> >> Does anyone know a way/function to print out floats? Is there a procedure 
> >> either AmigaE itself, or ks2.04?
>  
> since E doesn't really support floats in 2.1b, there are no support
> functions for it either, but for now, this works:
>  
> PROC writeflt(n)
>   WriteF('\d.\z\d[4]\n',SpFix(n),SpFix(SpMul(SpAbs(SpSub(SpFlt(SpFix(n)),n)),
> 100.)))
> ENDPROC
>  
> vary the "[4]" and "10000." for different layouts.

.. Yeah, I had something along this line, except I multiply x by 100 and then 
print a [cursor left][cursor left][insert] "." - a bit roundabout, bit it
works (;
  
> >> A hint.. if you've got ks2.04, use Fgets() instead of ReadStr(). ReadStr()
> >> is something like 30 times slower! (Replacing ReadStr() with Fgets() in EPP
> >> makes it a lot more usable! :)
>  
> ReadStr() is unbuffered IO and Fgets() is buffered... You can't
> always exchange them that easily as with EPP.

I don't know, I just replaced the read() routine in EPP with one that used
Fgets() and it worked fine. Of course this is just one my system...

Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Mon, 7 Jun 93 21:52:13 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 7 Jun 93 21:52:13 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o2uhR-0002GfC; Mon, 7 Jun 93 20:50 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA27195
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Tue, 8 Jun 1993 13:46:11 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306080345.11372@minyos.xx.rmit.oz.au>
Date: Tue, 8 Jun 1993 13:45:51 +1000 (EST)
In-Reply-To: <m0o2nd9-0000lFC@crash.cts.com> from "Barry D. Wills" at Jun 7, 93 03:15:00 pm
X-Mailer: ELM [version 2.4 PL21]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 1538
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: BWILLS@kirk.safb.af.mil (Barry D. Wills)
Cc: amigae@bkhouse.cts.com
Subject: Re: [Untitled reply (from Wouter)]

> 
> This is true...except that I don't have KS2.0, so I couldn't use Fgets().  It
> sound like you are using an obsolete version of EPP, Son Le.  In EPP V0.13b I 
> have replace all my ReadStr()'s with Read()'s and a juggling act, and this has
> significantly increased the rate of input.  I am interested in hearing how 
> Read() compares with Fgets().  (BTW, epp013b.lha was uploaded to Aminet some-
> time last week.  It fixes some potentially serious bugs, so ditch the old
> versions!) 

Read() is just slightly slower than Fgets() (;

Actually, I did get epp013b, but didn't notice any significant changes except
for Read() so I ditched it.. I think I better have a second look..

Btw: On my system, epp gurus if you don't specify the filenames, Close()ing
unopened files.. easy fixed. (Btw: Wouter, how about an uninitialised variable
warning?)  Also how about a WbenchToFront() before you start.. much better than
waiting for EC to pop it to front. Besides it doesn't hurt.

> Wouter couldn't be more right about the difficulty of exchanging ReadStr() and
> Fgets() in most cases, though.  How did you fare, Son Le?  I had a serious 
> headache from my bout with it.

What sort of problems? Here's how I currently have it.

PROC read (fileHandle, theString)
  IF Fgets(fileHandle,theString,1024)=FALSE THEN RETURN -1
ENDPROC  0

And the rest of the program the same.

I was gonna support wb1.3 but it was too much trouble re-writing what was
already in wb2.0. EPP's a great program, only wish it was faster than EC!! (;

Son Le

From bkhouse!nkraft Tue, 8 Jun 93 07:51:49 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 07:51:49 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00ejd; Tue, 8 Jun 93 07:16:00 PST
Date: Tue, 8 Jun 93 07:16:00 PST
Message-Id: <9306081516.AA00ejc@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.cts.com
Subject: re:  How do you use E?

This was caught in a mail fiasco, so I'm putting it up manually.

Originally From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>

I have used E in three small projects to date:

1.  Fill, a file-copy program primarily intended for use as a hard-drive-
to-floppy utility, which copies files using a best-fit algorithm so that
there is the least possible amount of wasted storage.  Files are left whole,
not split.  (This was distibuted before I realized there was such an avid
interest in E source code, so the source will be included with the next
release.  It may be especially interesting because it computes DOS overhead
on OFS floppies.  Let me know if you can't wait for the next release, I'll
mail it to the list.)  Latest version is 0.11b.

2.  EPP, which I've come to find has a few fans out there.  This E
Preprocessor lends modularity to E V2.1b.  I wrote it for me, and released
it to the net at the recommendation of a friend.  Latest version is 0.13b.

3.  Fish2HT, which is really a package of three easy-to-use utilities that
eat FishXrefs and FishCons and spit out Amigaguide docs.  Latest version is
0.10b.


What I have in the making:

1.  A simple game I'm using to teach myself Amiga graphics and animation.
That's why I need E or C code that shows bob usage.  With the books I have
I'd have to do a lot of digging.  I'd rather learn by example.  Sprites were
easy.  If anyone wants to see some sprite code, let me know.

2.  I'll probably come up with some E tools and examples along the way,
which I'll be posting.

I know not where I'll go from there...

-- Barry


From bkhouse!nkraft Tue, 8 Jun 93 07:51:52 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 07:51:52 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00ejn; Tue, 8 Jun 93 07:19:05 PST
Date: Tue, 8 Jun 93 07:19:05 PST
Message-Id: <9306081519.AA00ejm@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.cts.com
Subject: Re: How do you use AmigaE? (fwd)

[This was sent to me, but obviously meant for the list. -nrk]

On Jun 07, Peter Dilley wrote:

 
Ok, well to start off I'm really doing BASIC E. Using TEACH YOURSELF C 
book (big ugly yellar thing)...
 
PROC main()
DEF a,b
        WriteF('Enter something')
        a := Inp(stdout) /* in C it seems to be stdin */
        WriteF('\nYou entered \c',a)
        WriteF('Enter something else')
        b := Inp(stdout) /* ditto */
        WriteF('\nYou now entered \c\n',b)
ENDPROC
 
Now first I know I forogt a \n after the \c on the first WriteF that 
gives
the result to variable a. So put it in there.
 
Ok in C im in the cli running the executable.
Enter something
so I type ! and return
You entered !
Enter something else
so I type @ and return
You now entered @

Ok in E im in the cli and then EC the example.e file and run the 
executable.
Enter something
so I type ! and return
You entered !
Enter something else
You now entered 
^^^^ In E it just flies through skipping the next attempt to get 
variable. After the first Return is pressed it goes flippo.


------------------------------
aga@qedbbs.com (Peter Dilley)  or  qed!aga
The QED BBS -- (310)420-9327

From bkhouse!nkraft Tue, 8 Jun 93 07:51:54 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 07:51:54 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00ejs; Tue, 8 Jun 93 07:20:10 PST
Date: Tue, 8 Jun 93 07:20:10 PST
Message-Id: <9306081520.AA00ejr@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.ctc.com
Subject: VHS controled by E

[This one was also caught in the mail fiasco. Sorry for the delay. -nrk]

From: ad047@freenet.carleton.ca (Stephane Costisella)

I am building a (simple) VHS controler with an old joystick cable plugged
in the gameport. The camera pause on the VHS is plugged with the black and
yellow wires (this is the fire button). When I put together the camera pause
wires, the pause is off and the VHS is recording. And when two pause wires are
unconnected the pause is on. 

After that I've found this I decided to use the gameport.device to control
the pause of my VHS. I tried to find a way to do it and I didn't succedeed
yet (GURU!). So I need a routine that can connect or disconnect the two wires
via the joystick port. And if you guessed what it will do... A cheap single
frame controler for my ray-tracing animations. I need a good routine to load a
HAM Overscan interlace picture, a timer routine(+time & date), by the way I
tried the DateStamp() command and I allways get a GURU, and the more
important is the routine to control of the joystick port.

--
------------------------------------------------------------------------------
| Stephane Costisella, Hull Quebec, Canada  | Talk me about: //3D Raytracing |
| Freenet: ad047@freenet.carleton.ca        | ------------- // Programming   |
|___________________________________________|            \\//  CommodoreAMIGA|

From bkhouse!nkraft Tue, 8 Jun 93 07:51:56 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 07:51:56 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00ejx; Tue, 8 Jun 93 07:21:20 PST
Date: Tue, 8 Jun 93 07:21:20 PST
Message-Id: <9306081521.AA00ejw@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.cts.com
Subject: Re:  How do you use Amiga E?

[This is, I hope, the last one that got caught in the mail fiasco. -nrk]

Originally From: UMLANGSTON@MSUVX1.MEMST.EDU

  Well, now that I've put it on my new 1200HD (as opposed to my poor old
500 I just sold), I've been working on artificial life programs, mostly.
I mainly work in cognitive modelling/learning research, but ALife is a hobby
of mine.  Right now I'm working on a truly multitasking version of TIERRA
(for those of you not familiar with TIERRA, it's a socio-evolutionary
simulation of program evolution)

  Besides that, I also use E to write helpful cli commands and the like.  
I think I'll write some background demons this weekend, in fact.

By the way, I think Wouter deserves an enormous round of applause...E is
incredible (however, I can't get it to run arrays of any significant size...
say, oh, 10,000x10,000)

BTW pt.2:  I was serious about the array comment...just realized it may have
sounded sarcastic...but I need to do matrix manipulations at this magnitude 
for some of the ALife work I do...that, and enormous arrays of structures
fail as well...also, arrays of structures containing arrays...)

-mark langston
institute for intelligent systems
department of psychology
memphis state university
memphis tn 38152

langston@memstvx1.memst.edu
umlangston@memstvx1.memst.edu
fugue@mindvox.phantom.com

From crash!kirk.safb.af.mil!BWILLS Tue, 8 Jun 93 08:02:39 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 08:02:39 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o342g-0000kIC; Tue, 8 Jun 93 06:48 PDT
Message-Id: <m0o342g-0000kIC@crash.cts.com>
Date: 8 Jun 93 08:46:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  How do you use E?

I have used E in three small projects to date:

1.  Fill, a file-copy program primarily intended for use as a hard-drive-
to-floppy utility, which copies files using a best-fit algorithm so that
there is the least possible amount of wasted storage.  Files are left whole,
not split.  (This was distibuted before I realized there was such an avid
interest in E source code, so the source will be included with the next
release.  It may be especially interesting because it computes DOS overhead
on OFS floppies.  Let me know if you can't wait for the next release, I'll
mail it to the list.)  Latest version is 0.11b.

2.  EPP, which I've come to find has a few fans out there.  This E
Preprocessor lends modularity to E V2.1b.  I wrote it for me, and released
it to the net at the recommendation of a friend.  Latest version is 0.13b.

3.  Fish2HT, which is really a package of three easy-to-use utilities that
eat FishXrefs and FishCons and spit out Amigaguide docs.  Latest version is
0.10b.


What I have in the making:

1.  A simple game I'm using to teach myself Amiga graphics and animation.
That's why I need E or C code that shows bob usage.  With the books I have
I'd have to do a lot of digging.  I'd rather learn by example.  Sprites were
easy.  If anyone wants to see some sprite code, let me know.

2.  I'll probably come up with some E tools and examples along the way,
which I'll be posting.

I know not where I'll go from there...

-- Barry

From crash!kirk.safb.af.mil!BWILLS Tue, 8 Jun 93 08:02:41 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 08:02:41 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o342T-0000kOC; Tue, 8 Jun 93 06:48 PDT
Message-Id: <m0o342T-0000kOC@crash.cts.com>
Date: 8 Jun 93 08:44:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  [untitled reply]

>Read() is just slightly slower than Fgets() (;

Hmmm, sorry to hear this, Son Le.  I still plan on using Read() since OS1.3 
users can use it.  Of course, if I find something faster that's 1.3 compatible 
I'll  use it.  When I get 2.1 I can start supporting both OSs.  'til then you 
should have little trouble plugging in the read() function from V0.10b and 
replacing Read() with Fgets().  BTW, why the difference in speed?  This could 
be crucial since I'm basically reading into a buffer and copying part of the 
buffer to a string variable.  That extra step takes some time.

>Actually, I did get epp013b, but didn't notice any significant changes except
>for Read() so I ditched it.. I think I better have a second look..

Eesh!  Let me reiterate:  DON'T USE EARLIER VERSIONS ANYMORE!  Earlier versions
chewed up my source in some instances.  Although this won't cause any permanent
damage to your source, it may cause permanent damage to your brain when you
can't figure out why your code's not working.  |-(

>Btw: On my system, epp gurus if you don't specify the filenames, Close()ing
>unopened files.. easy fixed. (Btw: Wouter, how about an uninitialised variable

Thanks for the info.  I hope that's fixed in V0.13b.  I'll take another look at
it.  |-)

>I was gonna support wb1.3 but it was too much trouble re-writing what was
>already in wb2.0. EPP's a great program, only wish it was faster than EC!! (;

I can sympathize.  What kind of system are you running?  I'm using a
Derringer-030, 25MHz w/32-bit RAM, and it breezes through most things, but when
I stepped down to test EPP on the 68000 it was physically distressing! 
Realistically, Son Le, I don't know of a compiler/linker out there that's
faster than EC (my hat off to Wouter!).  It would definitely be faster if an
entire source file is read in at once instead of just a piece at a time.  And I
have the memory for it, but most Amiga owners don't.  To compromise I added a
command-line switch in EPP V0.13b to specify input buffer size.  If you got it,
use it.  |-)

-- Barry

From crash!kirk.safb.af.mil!BWILLS Tue, 8 Jun 93 17:50:33 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 17:50:33 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3Cg5-0001SpC; Tue, 8 Jun 93 16:02 PDT
Message-Id: <m0o3Cg5-0001SpC@crash.cts.com>
Date: 8 Jun 93 17:59:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  How do I use E?

Peter Dilly, in a message you said:
/*

Now first I know I forogt a \n after the \c on the first WriteF that
gives
the result to variable a. So put it in there.

Ok in C im in the cli running the executable.
Enter something
so I type ! and return
You entered !
Enter something else
so I type @ and return
You now entered @

Ok in E im in the cli and then EC the example.e file and run the
executable.
Enter something
so I type ! and return
You entered !
Enter something else
You now entered
^^^^ In E it just flies through skipping the next attempt to get
variable. After the first Return is pressed it goes flippo.


------------------------------
aga@qedbbs.com (Peter Dilley)  or  qed!aga
The QED BBS -- (310)420-9327

*/


PROC main()
DEF a,b
        WriteF ('Enter something > ')
        a := Inp (stdout) /* in C it seems to be stdin */

        /*---------------------------------------------------------------*/
        /* Try this:                                                     */

        WHILE Inp (stdout) <> 10 DO NOP  /* Flush the input buffer. */

        /* If you only want to get one character, do this.  10 is the    */
        /* decimal ascii code for the line-feed character, which is left */
        /* in the input buffer after pressing return.   This gets rid of */
        /* it.  Incidently, Peter, you can Inp() a whole string at a     */
        /* time using a loop, checking the value to tell when the end of */
        /* input has been reached.                                       */
        /*---------------------------------------------------------------*/

        WriteF ('You entered \c\n', a)

        WriteF ('Enter something else > ')
        b := Inp (stdout)  /* ditto */
        WHILE Inp (stdout) <> 10 DO NOP  /* Flush the input buffer. */
        WriteF ('You now entered \c\n', b)
ENDPROC

From crash!minyos.xx.rmit.OZ.AU!s924723 Tue, 8 Jun 93 19:48:48 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 19:48:48 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3FRO-0002aQC; Tue, 8 Jun 93 18:59 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA06087
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Wed, 9 Jun 1993 11:57:00 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306090156.4096@minyos.xx.rmit.oz.au>
Date: Wed, 9 Jun 1993 11:56:37 +1000 (EST)
In-Reply-To: <m0o342T-0000kOC@crash.cts.com> from "Barry D. Wills" at Jun 8, 93 08:44:00 am
X-Mailer: ELM [version 2.4 PL21]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 2211
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: BWILLS@kirk.safb.af.mil (Barry D. Wills)
Cc: amigae@bkhouse.cts.com
Subject: Re: [untitled reply]

> 
> >Read() is just slightly slower than Fgets() (;
> 
> I'll  use it.  When I get 2.1 I can start supporting both OSs.  'til then you 
> should have little trouble plugging in the read() function from V0.10b and 
> replacing Read() with Fgets().  BTW, why the difference in speed?  This could 
> be crucial since I'm basically reading into a buffer and copying part of the 
> buffer to a string variable.  That extra step takes some time.

Actually, after examining epp013b and doing a bit more testing, I must say that
your method is almost(!?) as fast as Fgets() _if_ you increase the buffer et al
to max.. Then epp013b is slower by about half a second, processing epp.e.
Must be the extra passing and parsing. Also, since E doesn't registerise
procedure variables, sometimes it's slower (although still smaller) than
optimised C code. For max speed, use assembly..

> Thanks for the info. I hope that's fixed in V0.13b.  I'll take another look at
> it.  |-)

Yep, it's fixed. Btw: can you change your parsing routine to accept main() and
not "main ()".. it's looks wrong. (;

> I can sympathize.  What kind of system are you running?  I'm using a
> Deringer-030, 25MHz w/32-bit RAM, and it breezes through most things, but when
> I stepped down to test EPP on the 68000 it was physically distressing! 

Amiga 2000 with 105 meg GVP series II - plain 68000. Now you know how I feel! 

> Realistically, Son Le, I don't know of a compiler/linker out there that's
> faster than EC (my hat off to Wouter!).  It would definitely be faster if an
> entire source file is read in at once instead of just a piece at a time. And I
> have the memory for it, but most Amiga owners don't.  To compromise I added a
> command-line switch in EPP V0.13b to specify input buffer size. If you got it,
> use it.  |-)

I don't know, but I feel the line parsing is what's slowing it down. Maybe I'll
have a closer look at your code and see if I can speed it up. I'll keep you
posted.

On the subject of your sources (or anyone's for that matter) post them!
The more sources, the merrier and the more we can learn!

(To Norman Kraft, sorry Barry, how do we post sources? UUencode or plain text?
Source line/length limit?)

Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Tue, 8 Jun 93 19:48:52 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 8 Jun 93 19:48:52 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3Fad-0000D9C; Tue, 8 Jun 93 19:08 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA06185
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Wed, 9 Jun 1993 12:08:20 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306090208.5191@minyos.xx.rmit.oz.au>
Date: Wed, 9 Jun 1993 12:08:15 +1000 (EST)
X-Mailer: ELM [version 2.4 PL21]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 815
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Link Lists and Lists


Does anyone know if you can use MapList, ForAll, Exists list functions on
linked lists? Also how are linked lists stored in memory and finally, what's
the difference between these two examples:

1. d:=Link(c,NIL)                2. d:=Link(d,NIL)
   d:=Link(b,c)                     d:=Link(c,d)
   d:=Link(a,b)                     d:=Link(b,d)
				    d:=Link(a,d)

They both produce the same result assuming a, b, c are all strings.
Also can numbers be linked? I couldn't. And lastly, if a, b, c are initialised
by New() and linked.. How can you free them? I think that's the problem. If left
alone, the program gurus upon exit.

One for thing.. How can you read/write OBJECTs with uneven strings?
eg.  OBJECT phonebook
       name[15]:ARRAY
       address[40]:ARRAY
     ENDOBJECT

Any help appreciated.
Son Le

From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 00:06:40 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 00:06:40 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3H4K-0002yBC; Tue, 8 Jun 93 20:43 PDT
Message-Id: <m0o3H4K-0002yBC@crash.cts.com>
Date: 8 Jun 93 22:41:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re (renamed):  faster EPP

Subj:   Re (renamed):  faster EPP

Son Le, good to hear from you again.

[starting with your quote:]

>>>Read() is just slightly slower than Fgets() (;
>>
>> I'll  use it.  When I get 2.1 I can start supporting both OSs.  'til then you
>> should have little trouble plugging in the read() function from V0.10b and
>> replacing Read() with Fgets().  BTW, why the difference in speed?  This could
>> be crucial since I'm basically reading into a buffer and copying part of the
>> buffer to a string variable.  That extra step takes some time.
>
>Actually, after examining epp013b and doing a bit more testing, I must say that
>your method is almost(!?) as fast as Fgets() _if_ you increase the buffer et al
>to max.. Then epp013b is slower by about half a second, processing epp.e.
>Must be the extra passing and parsing. Also, since E doesn't registerise
>procedure variables, sometimes it's slower (although still smaller) than
>optimised C code. For max speed, use assembly..

Well, a maximum 1024-byte buffer seemed good to me at first, but I have seen
the error of my ways.  EPP 0.14b will be out in a few days, and the max
input file buffer constraint will be removed.  I modified the code and tried
to break it, but it stood, so it looks like those with enough ram will be
able to set a buffer size to accommodate their largest file.

>
>[....]
>
>Yep, it's fixed. Btw: can you change your parsing routine to accept main() and
>not "main ()".. it's looks wrong. (;

Will do.  Sorry about that, I suppose I'll be ironing out my coding habits
for some time.

>> I can sympathize.  What kind of system are you running?  I'm using a
>> Deringer-030, 25MHz w/32-bit RAM, and it breezes through most things, but when
>> I stepped down to test EPP on the 68000 it was physically distressing!
>
>Amiga 2000 with 105 meg GVP series II - plain 68000. Now you know how I feel!

How much ram?  Will the removal of that constraint help you?  What kind of
times are you getting?

>On the subject of your sources (or anyone's for that matter) post them!
>The more sources, the merrier and the more we can learn!
>
>(To Norman Kraft, sorry Barry, how do we post sources? UUencode 
From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 00:06:43 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 00:06:43 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3H6d-0000SmC; Tue, 8 Jun 93 20:45 PDT
Message-Id: <m0o3H6d-0000SmC@crash.cts.com>
Date: 8 Jun 93 22:41:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  E, C, and bobs

Subj:   re:  E, C and bobs

Hi, Peter, good to hear from you again.

>However I have this european thing from the International Amiga C Club
>that explains everything about amiga in C. Mine is version 2.0 and I know
>they released newer versions. Mine is 4 disks which have tutorials and
>source in C.

Thanks for the info.

>C give me a headache. I love E but I can't do the simple things in the
>TEACH YOURSELF C book in E.

Send me some of your C code from TEACH YOURSELF C and I'll try to translate
it.

>I try stupid Text processing garbage like
>
>Ask for input (a character)
>
>Tell user that <character> in ascii is <asciinumber>
>
>Ask for any input to continue or Q to quit.
>
>Problem is, after one FgetC()
>any other FgetC gets skipped over and a blank and <CR> gets put in it's
>place.

Looks like our messages are passing each other on the net.  By now you should
have gotten my message treating your a:=Inp(stdout) problem.  You can use
the same solution for FgetC().

>I also only have E 2.1 not 2.1b :-(

Are you having trouble finding 2.1b?  Hang in there.  Wouldn't want you hang
up on E.  It's a pretty awesome language.  I'm serious when I say that you
should send some C code.  I'll see what I can do with it, and I'm sure some
others on the list would enjoy the exercise.  Talk to you later.

-- Barry

From crash!sirius.UVic.CA!jblake Wed, 9 Jun 93 00:06:47 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 00:06:47 PST
Received: from sol.UVic.CA by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3Hnq-0002upC; Tue, 8 Jun 93 21:30 PDT
Received: from sirius.UVic.CA by sol.UVic.CA (4.1/SMI-4.0.3-UVic-2.43TMX)
	id AA08325; Tue, 8 Jun 93 21:30:11 PDT
Received: from stokes.UVic.CA by sirius.UVic.CA (4.1/SMI-4.1-Engr.UVic.CA-E)
	id AA21150; Tue, 8 Jun 93 21:30:09 PDT
Date: Tue, 8 Jun 93 21:30:09 PDT
Message-Id: <9306090430.AA21150@sirius.UVic.CA>
From: jblake@sirius.UVic.CA (James  Blake)
To: amigae@bkhouse.cts.com
Subject: What am I using E for? and a question.


My main use of E has been to learn how to program the Amiga.

I tried to start programming in C, but I didn't find it very
forgiving and would usually lose interest in whatever I had
started to program.  However after using E I have found that
I generally understand what the computer is actually doing
much better.  (Does that make sense?)  Anyways, I have actually
completed a program now, (or mostly completed anyways) and found
that I generally had fun doing it. 

The program I have written is another version of Mines.  I will
probably be releasing it shortly.  (Its called JMines)

My question is what is the E equivalent to the c expression:

UWORD penvalue = myDrawInfo->dri_Pens[PENNAME]

I would have thought it was:

penvalue:= mydrawinfo.pens[PENNAME]

but e tells me this is a syntax error.  If I just use:

penvalue:= mydrawinfo.pens

it will give me a value but it is meaningless (to me anyways)

If it helps figure out what I mean, I got the C command from
page 57 of the RKM:Libraries Manual.

I hope someone can help me.

..james

From bkhouse!nkraft Wed, 9 Jun 93 09:49:06 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 09:49:06 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00esu; Wed, 9 Jun 93 08:09:45 PST
Date: Wed, 9 Jun 93 08:09:45 PST
Message-Id: <9306091609.AA00est@bkhouse.cts.com>
In-Reply-To: <9306090156.4096@minyos.xx.rmit.oz.au>;
	from s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
	at Wed, 9 Jun 1993 11:56:37 +1000 (EST)
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: amigae@bkhouse.cts.com
Subject: Posting sources to the list.

Hello Son (Son Huu Le), on Jun 9 you wrote:

> On the subject of your sources (or anyone's for that matter) post them!
> The more sources, the merrier and the more we can learn!

Absolutely! This is one of the primary purposes I'm hoping this list can
serve. Discussing a programming language is always interesting, but its
much more instructive to see what you're talking about.

> (To Norman Kraft, sorry Barry, how do we post sources? UUencode or plain text?
> Source line/length limit?)

For small sources, up to about 250 lines or so, post as plain text when
convenient. This allows questions and general discussion about the source
to take place on the list much more easily. Try to keep everything under
80 characters per line. I think everyone here can handle that. You can
post sources with longer lines (they get that way sometimes...), but be
aware that some systems will truncate your source down to 80 characters
per line.

For larger sources, and for those involving several files, lha'ing
and UUencoding would be best. Try to keep these as small as possible.
For any UUencoding over 64K, please be very sure that *several* people
on the list are interested in seeing it, not just one or two (in that
case, mail directly), and try to break the UUencoded file up into <64K 
sized chunks. There are still systems out there that will bounce or 
junk messages longer than that. Do not post multi-megabyte archives
to the list. Smaller systems just can't handle them, and we do need
to be considerate of our subscribers that are receiving this list on
an A500 with an almost full 20MB hard drive.

All in all, the general rule for posting source is: be polite. :)

Norm.


----------------------------------------------------------------------------
Norman Kraft                            INET  : nkraft@ucsd.edu (work)
Peptide-T Clinical Trial                or try: nkraft@bkhouse.cts.com (home)
HIV Neurobehavioral Research Center     UUCP  : ucsd!nkraft
Dept of Psychiatry, School of Medicine  
University of California, San Diego          Usual disclaimers...
----------------------------------------------------------------------------

From crash!cbmehq.uucp.commodore.com!cbmnor!cnaas!naasc Wed, 9 Jun 93 13:57:17 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 13:57:17 PST
Received: from cbmmail.commodore.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3VYR-00008YC; Wed, 9 Jun 93 12:11 PDT
Received: from cbmvax.cbm.commodore.com by cbmmail.commodore.com (4.1/SMI-4.1)
	id AA06141; Wed, 9 Jun 93 15:11:16 EDT
Received: by cbmvax.cbm.commodore.com
	(5.57/UUCP-Project/Commodore - Server Version 01/25/93)
	id AA12603; Wed, 9 Jun 93 15:11:26 EDT
Received: by cbmehq.esco.so.commodore.com; Wed,  9 Jun 1993 20:11 MET
Received: by cbmnor.no.so.commodore.com; Wed,  9 Jun 1993 20:35 MET
Received: by cnaas.adsp.sub.org (V1.16/Amiga)
	id AA00360; Wed, 9 Jun 93 20:36:20 GMT
Date: Wed, 9 Jun 93 20:36:20 GMT
Message-Id: <9306092036.AA0035z@cnaas.adsp.sub.org>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.11)
Organization: SSD
Reply-To: cbmehq!cbmnor!cnaas!naasc@cbmvax.cbm.commodore.com
X-Charset: iso-8859-1
Content-Type: text
Content-Length: 183
From: naasc@cnaas.adsp.sub.org (Christopher Naas) (Christopher Naas)
To: amigae@bkhouse.cts.com
Subject: Off the mailing list


Please take me off the Amiga E mailing list.



   __ __
  /_ /_ /\  Christopher Naas            My opinions only,  not
 __/__//_/ naasc@cnaas.adsp.sub.org    those of my co workers

From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 13:57:27 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 13:57:27 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3Wjs-0002BEC; Wed, 9 Jun 93 13:27 PDT
Message-Id: <m0o3Wjs-0002BEC@crash.cts.com>
Date: 9 Jun 93 15:23:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  Fill E Source code

Hi, Alex.  On 9 Jun you said:

>Hi there... I'm fiddling around with E at the moment, and I have a copy of Fill
>0.11b. I would be interested in the source to this, either via the E mailing 
>list, or by email to butcau@essex.ac.uk.

Okay.  I'll post the source sometime later this evening (Central Standard
Time).  Since it was my first E project I'm not promising prize-winning code,
although it is pretty to look at, and commented, too!

>Also, a suggestion... would it be a lot of work to make fill cope with treating
>directories as a file... and please can you implement wildcards soon? Use the 
>ARP library perhaps?

Hmmmm.  I was afraid someone might want directories.  I thought a little about
the problems this posed, specifically:  What if the directory contents doesn't
all fit on one diskette? and What is the DOS overhead for creating a directory?
The first problem is the real issue.  I could move the directory contents and 
not keep the directory structure, I could split the directory across diskettes,
thus ending up with some of the files in "disk1:dir1" and the remainder in 
"disk2:dir1" through "diskn:dir1".  Any preferences?  It appears to me that the
fancier I try to make the algorithm the more disorganized things can get on the 
destination disks.  I didn't really intend Fill to be an archiving/backup util.
I just wanted a time-saver for clearing off my hard-drive without a lot of 
hassle and wasted floppy storage.  I'm still open to suggestions.  Look at the 
code when I post it, and then ask me again later.

I can look at wildcards.  I believe the solution would be easy.  Since I'm 
making a list of filenames and sizes, I can match filenames against a pattern
when creating the list.  But I don't think E has a module for arp.library, does
it?  (Don't reply.  By the time you receive this message I'll have answered for
myself.)

Don't think I'm shooting you down.  Those are just spontaneous thoughts.  I'll
keep in mind what you said, Alex.  I'd be interested in any suggestions from 
anyone about Fill.  Keep 'em coming.  Later.  |-)

-- Barry

From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 13:57:34 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 13:57:34 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3Wr5-00001UC; Wed, 9 Jun 93 13:34 PDT
Message-Id: <m0o3Wr5-00001UC@crash.cts.com>
Date: 9 Jun 93 15:32:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: E Source (Fill V0.12b)

UUencoded, of course:

begin 644 fill012b_src.lzh
M*IPM;&@U+=\#  "-"   1J3(&B !$6-O;6UA;F1,:6YE07)G<RYEZ/M5!0!0
MI($' %&\ L,"$0 "1FEL;/]036]D=6QE<_\' %04/A4L   #1VN7K;;<MYWX
M _W$TI5%)+>.W/@8<3D8K:C#:8F UPP,2_&B*D2JB5)'O''Y)+:S=%@&VPH&
M&X-T[.'71MM/3H[NO9GD#"_X:_>KYGL[Z3K'#@_KLE2A_>7[3J[L@;17CMVA
M ND2]Q '1S!IFU!-W!KFU9I>P'?N;HP!Q_'10/I"#4\EBZL4+ ]$0=01Q@AR
M?UR904LUJ]*51 **&^SQ!4*-JZ<&!J]-2=06IN6= @7R.A9)0T!XIM#XZ^J/
MW!9:G;::NL;5!YTI"A*,*PI-Y"!IYQ4ISO)F+2"S;:CJ6J, F2R8 *7 \3VJ
M6$Z:ZS(HYZF.LV^-[#*8]@-QFPF8I=IT;0J)($H^3=MI8X*4U4,7 @4'OQ!K
M<BP%[SB@("Z880AB G1^[,,%221BETI"&T2I3B?"N^"(@]I<:AG2BCAR1E4\
M,WC]899*-H_2X5+&]**BXJ91D?0J !![F5.O1B>R 2BK<3FXLSS9!I+Q>J"[
MVMQ]* 92B%U0+D3K.7=:*[K4*#GZF5A9;SBS.",R"P0E9)\Z=J#_L(?2Y/&+
MBN6==(#7X#0R]ZK#%<N-S,)FYLK:R_G^@?CB#I:'\JQY$V;KQ7X<,08\^>%O
M;JDFV:I0RX\^N0N"27KS96,AP;GVKX6C+HWB<9U=+$G+W:@.SZ^UA 6CD:V>
M*1Q*0UDQ<.Z%M LI*X('T6Z48]Y//LQ/[8(7L1O*"?%S-)(X,LJ-P<&?B?,,
M+S1L,FXBW@.Y@2R*>QBN&>X3'F+2?L!;:)IZ2K_R"A'>?+_:Z>M=M]>&^RJ@
MRJ[C]_]3V^>GQE?!.@]!01? G):B"![BY[V=#@P% +<<P3:MDCA0/QXL#$_(
M'68C]P0AVXY>O.X'&S0$FK]9>Z62+?CW+[[->/LY<&B30_',9#(4>EG*R/5Q
MQNM<)8Q)QHN(M= UI05C#+(D3"MW*,6&$INWYCH?Y($$W;)*&HQU%3K?!\+$
M=K^^^(Q[(:AX@ES9_LR"D=K&[^W,6C/? CI3 _L]CKT]]I"O(.^%S'^1ODHO
M]&&)S:</S,A\HL@9^;<-R;@G,@"#-/\_727]_S\='D:JYM'72# EF4$J=^0V
M_QJ:_QG.@BJH#KA:0:=@V#K;HW)U?^SC6%,-EIR@PHE+WX5#']45[.Z.;-+D
M [?J0E&UH97')4)D;+ @Z6"M_+))IF9S:Y,\F28LX\XV,RFM8>3'KDX"&^'&
MR&:JH=IJG!'C*R4/)0*[WP#E<'L+8K6DA%5D(JW=^#U(H9<^>4-<(%O*AZE*
M)]PM;&@U+9P!  !# P  1J3(&B !#G-K:7!.;VY7:&ET92YE/8Y5!0!0I($'
M %&\ L,"$0 "1FEL;/]036]D=6QE<_\' %04/A4L   !5V*]<(D])O._@#_+
MQ+#JT;Q;&T%E72#FAGXO!C>#I>TIFYA[K&OQR[N5=%\?&#%ZL'UT"B)-O3'H
M<!_>C?%4;7/0@H91.74BN@VUL#'A&F2,2:!JDC@B\AAQL#[\=!*T::CM!9)R
M<E8H-,7Y3]14.2CO(<Y9ALXCX)3P+8GNO/@IIDH#8I*;:B=AA:1J15O."(&K
M3F<>;$F;Q;$+[8<CQ 1E1PK,>TT#J:$B_]Y;$E,\Z)DP*&3U;KX.Y0S=(;89
MM4.KZE=H2D,-A;TS@J1:#*0$]5-*4(;ZZMM9-V(?_UR99) J]AU9%4WHE(@J
M9WEE*<Z77C4:94RJ G7%V+\3$IME/AW>":=UPE-RN<TGN@?OE,9?"X;)G>B$
M;TG\CBO[E)EM!TIE_*!KSP0O7TC[[4-H9HG;\&F?IU'I8)]1WY1@&#^B!T$=
MJPUF)J;Z<\=NA+)UVDTDH7_TCV--+@1664:2(=T"")RV=V&'HG5Z/W<"Q//2
MQ5= )/8M;&@U+9@!   R P  1J3(&B !"W-K:7!7:&ET92YEGXE5!0!0I($'
M %&\ L,"$0 "1FEL;/]036]D=6QE<_\' %04/A4L   !5&.6HB3DFQSP!_'"
M!A5K+A6SGI&@%20H,U.C@67 U#:A*.C#=;*^.6Z @SIV!97*N!UT"B)-O42-
MP(]Z.&R>A)@RF<VM-=!]S8&7&-4A!)&-<A((O(8\K _WD)+6G54AH6#W)RUB
M@\QOE7U-0Z)W J$&F&WD/@M/$UJ8Z\^#'F4@-BDQ]R9V&+$C6J$D#7JT./-B
M31XMB%]L.$R $,GC6=%Q<(6RE2/KUC$I,\Z)E0*&45;[X.Z0SSD-L,W*?9A*
M[0E*<;37IG%<BT'6@*ZJ:5(0X5U;JR[\@__N:9;)8J]AV9ETWHE*DR 664R$
M*=>51YES0L"BR+LGVF*3;:?#PSA4KPF/TN6TKN@?OE,?O/S&R:7H@1Z3^$BO
M[EIEU!U)E_*!LTP0O7TC_5R&T-$3M^"[.#J/2T3ZC.,0Q-",F&'W4-WK"6XD
MJOG_<;^I#-VVD5$(7_P?W-+RILRJ(H>'8Q!$Y=-[##T3MFB//@L$X:/+K2 D
M:"UL:#4M<@   %<   !&I,@:( $+=7!P97)#:&%R+F4%J%4% %"D@0< 4;P"
MPP(1  )&:6QL_U!-;V1U;&5S_P< 5!0^%2P   !"2IK5F"\^^ /_(]P.!M2E
M)2SR*7B\.A)3DUJ?'8L8 (K1<WCR$.HO[XB)N?9(*>VZH,;Y8"P54D+4N_>L
M4-<0VP-)8SN:0/+4Q\K& !\L+6QH-2T5%   KD4  $:DR!H@ 09&:6QL+F55
M\54% %"D@0< 4;P"PP(/  )&:6QL_U-O=7)C9?\' %04/A4L   -BGR:[K&V
MV[7KCX ^Q/0("9(1)<DL:**S 0>"0C!'%@ M.U%8,X >)/8@.X/NX(H70OP6
MGQ"_?_>][WN[@  "22U"DU9*\KE<EEF3)J6W0NA,MT+K7=MS+W =K&VVWXO#
M0,8U9_#A-]6W3W-R\8W >1ZF8UO$]%(;BR89']KF?PG-Q0^P\5,N=5AQY8G^
M?HD-^G<^?Y_F-P/1193>@ 2,=BH 6CVQFB/&>+V'P(ZO]W^GXNIYZ]NX[:_K
M\<H +Y$5>W>-M N8HY )\)WHP43V4Q$C*+R^.X"5L0W_7&; >.1^!Z1^& >/
MAA/'!L2&OO1',_S&?DV(S/&YL,./'E0 ]UG9CAR17SDA='P,^.3AZ7LL9K^2
M*(\$AL#\1[\D,2>S\PY3GM>Q/P''"A@D'"C-#S*!$O- 2'_'%),L#V(?%Z# 
M:-_^T?%^ @87YXV%\'4_ 1B7SP8'X.<T,6!2D_R #U>@Y%5S1'.:/&\!+#!G
M/+S'D+@0XD@W"]%SCWH'49I.AZ18NZ282YGY-0")@>-?1AS^RJ#I?@R'C6!\
M@^^%1=1F/BQR/GP MU "(^)Y^ C*!L(XO3"2DE#EYA_%V<IO9#AR8CH/#\H%
MO&#(QD: !^!^/U[5_H>@YSFZ>@\"N6:\>_"24^;)APH['YB7R_'CPDKR#)BO
M'B)2^2#)&"9O99!S"'0(.!^/H'CE&O]1*NR8\<,1+-QD>L?C64>U>^3Y$N.F
MO9.;F 7)8AJ.YM;FWM^O>"*N9X.GFW=NDSI7S*=0 SPY4-*$?^()D2B*F:BO
MK\3OU.&K5[#EMO?.0R<BB" >(+,"1209&&47@@@E-XGI$$'N[9KV$FRVD0DA
M_SH22EZI*V#/221/WL@04@]?G'!M!(X@ *8]))J$Y&.@=T0N<"P/U4J"WH-P
MGH+27FL!J-<B9YX9*=+4\[5AB)PX<8@= >'('-";-09J"2DAA->?YR9R4PYI
M82,V STPY,. WK.?&9Z/UDR^0(>@ADZ#I8KV3']@8EDZ(<G/T(7:!(CK+!0Y
MC6A\PM,;D"+C=#V B/#[0^FQ].P3:^Q]FP7C^S(.RUTX#8V-#5K(*[3S'.YS
MR(X<KIH<1YH<#TCP;"!>% R0UH@S _$L-)?I0WD?VOR%[E"WGB>Q)6W['PE'
M#EV4>F6 _'T0]+'8LF.%H"Z7H]',A@TE%P.5G;3B/-A>C8=J4EO%#XQA^[Q$
MV;@!$T88<<;6(-V=B#=W41O^N-[4P8!P:LD6':JF>O!WT1M,;UY_"_((M]"A
MX?%0H<3O#R6'#;&"&/Q<,,>Q0XU^%7PM^,0"L0BN6!&5J1<_7P@^X>*KT/1;
M "U#Q>$UHH80@D']M\Z7\*9@+G+/)Q&<M7;+MES92? ^O);J>:7[<+ENY=L.
MU?H;XK;O):JN9_(Y]=3B5Z6^2M7X,X)KV:SLWO!7W;CKMVQ4M3#7B<XF_0=,
M<=OW=Y+F;P>AVS< +N3&(/Y4X';5P(!X7*Q+&R\"8:)@A$I](:4$P 03WB?T
M)"%"A5=LV[AK=?^QQVM=J()^[P$=!M\WS?EW/F_,H1&".D>>V0JX;KMD<:I9
M^B[PU[9<O=2GG?W]\U@I"0A7",4I/6__'\1-@M;+MQSQF-7#HX=RZ!*-CD!I
MK==KF$/(,R+=BZ7Y.@SB)294:M<I3,0FN@&@&1PCH)E52"C[1)W1+%D5+Q)Q
M* _M91-TS=7XB:=X/T.5;@H=;KF$^(02[F7&3[A0D+(H#E<KQFL.V?,A/YL<
MD10-(P6(&9 5/.ME)NU<[#"B:_(T:)YPF?2"$"3Y'PYSEGA24J%?@)9BL2OU
MICV8<!U&(=/%ZR^S@1)+DC,N_V]!8:[R99P\Y+$R6HEN@XC<YT2ALWK%""6D
M>"TV= >!=/JKP=1#K%Z2'4VA53"!VL(A!&$[#(A#P;A_%MH@>EVOBJ?7=#_=
MW@Y*Q.[!SL4-*W95^QRU:=M<0^->R3KD_OX7..YY[H>NJN\7'4M5[;ME;P!/
M\)HX:\=L\ETJ*1T448]]:I8MJ@@@PA 90SPT-CR(HDE42.^9OGX102\;P=:W
MS6:]CM0O46A?C>B*;/^*%^.T[5-C+K59X]: ?&:C2-YZEGAL. O".!^# ?VD
MC9:% ^3$OYA\,=G90TF/@4K=/B-X]\5VB'?*(_]@3>J(-ND5&S7K+XB#A-<\
M[EDUIY\63U%,9M$P!03^X$KXOO!7H\XBT%0@ER:*RT0;*:B>O9JI^R?K69RU
M!Z?F)0$1+J,;T[?JH*]([2/9OF\&UX%S[-//W/4SU6W+!.^%U*#8>M6I;<-X
M+_@H31"NMFH!6Y:Y'-/;O9NV';Q3'L1:41IX5GZJP6FE\)O[B?P!-<I_+1GN
M[)JEBQ2GYDK< (WZGL,O7"E,W,"()>?Y-_;T*S10/]_3\NE]- !S$+GX6E#Q
M__T/3/U?@B*;I_N1--U_+UPX5HNSDKKY3#'$;Q+5"O"X(;J$:W!8YB"'E9&H
MCG19VE> =7K4)P18%8X0$V38L@^(I.UQ!Y0A-$=UP%DM24J5"9!^:*=UP(5/
M$R1(N9:,O4:MEBUEEV/^B"L3_)7ED)!%1 S>)2YQ"'<^NJ))=">("@CM?>EA
MLYN$P',2XRMU(16>$H[U!"4O='CFFW<!R7_6*R/14E5\6--$BFR__&H_VOZ?
MB3-<Z!>VB]#@12^##WBI_1@?2N"1A#S"HQ#.E^^>-&%C1:OD7T>2\*?3)?DR
M1%?-;7_/YDSH46]95236*_H)>BJ:6DJ9F?"*/7CN6C7'=55J7L1(*5YEJT'H
MIMJH@K]E3*E5RQXKK,'94^"QQ FH7:.I:FA/K0.2\K!L7GILJA28WZZGS,0E
ME54)_V0K*MKXD-_\S8(;C^/)A+$0K9C_\95LGZ12^K2&?I)F5#R4R2EUF2Z8
M%%=/U)K931%7+]:C$4L<HE$2 B!3=.S"MD)!O,^ZFY9R*:2?TAI9"4L_.25O
MOYP(FCI$*([E(SMK-ZT Y7K[2L64&@)+LTL_J+QJZK6KNSAE_I^&5><KM+=O
M9Y4<S/Y<Z&V6J&LK&NCRJDUVLK+@$*.S/HUX!8CR30S42_"!$K2=GN?:6S<P
MPNR'^OC8?BVNVX]]PK!'N? 74);V#-%T606^LY*"O%,F;#*P8FQ#HZ8?<W3I
M&\GE3U"6=2,+4=E(428H[ E77!A"1.U6F/1'1^ @51N:"H^'4ST5N@X%_<F&
MAD[HAIB#%I95Y75[--50QN9K!GQ>L7R/C RLS2A]4 *5:N8,,Z?Q$#C0WG[4
M_OILQ*PY!\_CU<E=CB?/X]7)FQ)F;GM]+6KYR&(V"4]@&QYO]!L<+Z,ZA'"C
M5(I;*&:GC+&NSJ>G@_J70SQM8+T0RD>UD%-5S F!RJ!/F@>6CED&O8=.QLHY
MX&_VOV)CFH<9<1H/&=E4:URYR6K*HD.AZ_\'!2B/HK+D@S0[?F<IGK0-)L=A
MZ$,__3S3V^^$%OMA ]H1_? Y_U1LA#6A&I:.NJI6O[4;?OD+_[RI*'XJC[))
M!(%&(Q21*)NU>MFBV2R7-:I4X))?+R0(S[Y\&\F\<OEEB!L UYJE/-&VA1JC
MF58R(#48C@+?D]Y$]K%Z0W4D&O"P$(D%JD$?"91I@LKF-2LMS@/7"=FE:MA^
MM2HNQ,F"_=#4FB&:W!V]U)XIT?QQ>69,:=HR(NL<;]X7DY3#3_9D)32%%)M+
M)F\Z:HPH!$2&[V40HRMX,=>H7E,N67S!FE--O^T6L;7DU\+6[],['GIYY:(0
MCDEI['I);L=K^^B[M9TQ1W=7OE RR8G'^=U+]D3#5$&:3O='QF;7E(=.#T<"
MA?]L'DG!Z*AK'@+>16H8<3L!8CI!N%\*XW4&R;5@(,"O6T\%[LK^%:/!DQ<&
M60\=8;H31X[0:C?B/@E\Y'FY[13P1@Z. -!^N/2"88M?%;BM7-=+:E1B-'F7
M(:;J(BBT$?;7%I<H&*IQY)"WTXA;<+ML98+**-"-&]@5!RF.Y&2SR#*DT5B^
MF#AO(*X;S75Y"OTJ6S0-V?F<^\2!1NX4=2DDG/Y7ZR#3MIS( @")44:]E0;1
M4^D>6.0^(1?I]G8G6THX%V,.J77X+J"1-\IN[\WK"0I=06]T0LKJ (3A@J*O
ME[^L2(CJYYUKX2"([K"[\.CK&03%T(K3RS=_Y76_FDGL:Y)@#A?]C+4ME;UL
M]6]A38"^]N1C*/P<I_9^[F3-3SG58=:56(H3BD\-W7NC1)?$=RA-8-4PS\ ;
M]R,?E(FV,9&4[[]H-HY]#MX?XO&^+P^$:"QRI]2-/L-!X-&A^CD&WH'_1IVK
M;O$X[9<$)3C=M7+9D:,ZV;PZ_U#T1/R'&).V.6#E@)":+O;K_<L>QLZ;9JE,
M 4OJ2JAT '!G )+JS %L+_W '5#7[0&C)@_@ T1&YP/F8]^X#YU2Z"/+VE'%
M[C3FCK:>[U,[:.[KX>D#][8V8A>OA]@/8^-^HU5\.E0\/_7[Q-OGM1&>3?G2
MDF-?IHI):, JBY%(?-HS#><8K^PXS1I_?1(1PY(KZ 7YQ5U858?9?M*$WW^L
MM;G4@P5EO%>G<V_S^H#*W<M5[/F7R;R3L>P3^ F-BQ76^;<[\?LS7S:Q?LFG
MU_:M?F.C4P8.WH:("2NJ5H/*S\4#\U.G3ZX(=#6C42VG<9X,TMM(?=L<)2U5
M8UWL3?HS=E>RGI4-*@F"CK-VRYZ)17U*]T"EWDN,%0C!.5$[C(=VK)%AJC1P
M:MV2/Y4X!&L3<),6Z1-H_]'0<FR:^%A#?W<QXMF7?\TEBMH#\IMOJ8D :0I]
M)[]P98!I=RE.!A=IM%7<@F;<:\EFX%.T6]3R&W$Z+;,%QY22#5PHM^,Q1TF^
MC0ABDJNGF#^WW,&:S.U<R99XYT*-S37CMGDNDZ,[!ARH0VQNTD@/GP4]A&9V
M*P1+W<(;'D5!BU. Y@ 4(Q??0C9(Z RERH/ZWC6\PK@M-DY.*.6"L+AM.OF+
M"38VAV\^+_@K_7EC['LV$U/OU-+QB$\_:JOJ=4FZ.A>Q0BW+#E6X9F_S0:**
M/=JJU-5S0?\#^"#E%JMS/C!-&N197QN6GC1XA@B!4!"PV2F_0JK7 47QI[?2
M8A6OG_Y! ),2;*(&R6J6''2ZLT2R5C-+%>%2D(,&:5PE.]@J,6>3>M1]X27R
M8O*^!11?S2D-76EONM%]GS?X;;#_&:.NO%MY+]\8:^81(D#+RAW0>_ZPLQ5%
MFWS/12ZR48D$C%0CW3*9'7PF^K;I[F[>%YMP#&QAB*WB>&?D%H9(_M(L+.()
MOBI[!OEEKL4]\H T3_/T2&_3N?/\_S&X'HHLIO0 K& 14 <1[8Q>"#0<J?:2
MWV(W)O3Z@3.WJD*5/,F#IC>BC., V-\1@L#*"5(N?(2+(T[RM(%7.S[)2;08
MQ:0C_H_]&>?A;\]2TYPW4W%S'G6L!Z QPN6[EUERY*S0P/;&QF"J<'2K',8!
M367Q@(<K<LSH:LT#&V[R6JKC1F.DY[7L00NN# 7;V6MN,A]Z 2Y]=3B4#L]"
M5>ID3$$D660MQKY-:GJU?@0/FS+&:[&BV<<,!CN;>[^2DH/R\SWZZIKHV^O=
M5+74SU>\ 3VZUM!JM37XQ'3Y8-B5$5/F9")3!;X\DAE^.-&6Q*W6&*+@$3.7
M. )S=+GM3J .Q/RZ)'N2XRB>FU]PJ<2C0415^KBW,JMFU!&HP&562]S@K?I^
MGJZD:,)2W[ME_>K98FC-1>Y\\>4!--WK.A";+R, \\X).V\1"5*CZGVX%+1$
MGW]>Q@S$\V''XYA*RA\]P.2KGJ.RAKC"$'D1^J*X"S;P)BZ-'3[7?D0.A3$N
MTDBK/'((5*EV+2MGX+:I&='S#PUA!J&DH<+MZ<US@9FMCMS6?[0E_)-[67LS
M,$YMBMH:;F@-S[%#0'&W;6<SV:5:?SJ0OV82$DQ<G$C(G6RHY^&Z[9&1=J6?
MHN\->W]"Z1F6)-8<MW;CKMVQ4M>9REH:6GA4<D"!$G+V;XP20J><^,>_IF[N
MW#;*:)G)94$$M9P;V0X1-Y$]/CB)MA50 *SP0.;YQH9S<KWT\KQBK-GOL'P'
MJP/QWX8)'X,ARN_J4M$^ETW&(G$F"'(Q2R6[)O02_-S;&<W-9=XT0>*V')'T
M",<-!>:\B2C3;D<PKW)C&*+JD(Z)"DH/G@^GP=]SPKM\D"9VRWWZ6BH*^^@W
ME@$_?0=Z88;'^>V+P376%[*-PQ*QD++8BV?@3JQ;QQ9?G-A.]["DEA4?/$]B
M4B?^$-C^<-;_-M[_AMKO;68_8VB$1YUKP;.\I4.I@;09NPJ^>.]!R!JG;I;T
MUP5FK8-C]=MRBJAUVVX(J,:C_QJKI?3Y$WO\?E]1O)*NSRL=8S=QU/-\?;[C
M&VKWR?(8RJ91&:[%''ZTJCH[FURX-X,I\SPL!C;NW2%)IQ5/KNB&5=X.2L6E
MC^T+WS*L&4T#X:<PY0RG"BZ%P(N$%47Y)E2(>)T9]1$3*E[BP.18(T(0M[BT
M(8P_XQSBF+"OR5:W(D.XBWL6<QR,;1%64:B-!5Q#XU[-*=3S'J]Z=(G) ]>$
ME@#0-(%CX7HYG@BP',MB]F"4M>1O=821G=AEC37]-A;L9@5+7DY@5ZX(>F Q
MT(L.BPE* 3_>#Q7N;S4.,!Z4Z'@OPY()#EF9@Q7'GK74ZEDKQA*DM ;%=%U!
ML29@T&_??(Z,0GH:B59!9WM9*PWT&K@&X\(?\YY)".J:(>B"MI.F><_^K7OL
M%XH;7DI'(Z:,=(*K"K N="M1A8,\8C0,TXWW>U(!QJL=4JPT=96';WL_6=R2
M?#KMER;TW7XTR#C/7H8I$[I<MO."V9C>&X9#7#YS6YR)K'=%BS7:J.5V1=9I
MF4_&GC#,BYMQ#^\S$04 '5HM;&@U+:H$   B#0  1J3(&B !!&-F+F7#L%4%
M %"D@0< 4;P"PP(/  )&:6QL_U-O=7)C9?\' %04/A4L   #=FN7L:<<^QSP
M!_A@1.22<K@<I Y(K>G028W$ 657IRJ<'H351MNMLMDOCC_^[NMM@$MDY7N4
MP*K@17P#NX#61MISEX@;F/!0><( THUG"32$Z/X.$\I]"-*#P@B,-$D44$<(
M:T1GY XN6T7V-]S.Z8+<,D_*Y)/;+#%'Y-D="(C@?PT'EH1)'.G8F>SXP-D_
M-Y]XS5H"^'USY<'QK]L9L=7H_GS8<3IE):_?O@VIA>,F%#!-JV1'CH#K@FG/
M,%_V^)NVWWLN8/OSX<N+\C!?#[O?[[5IPV$()M6$8!Y1?]3##@.'GHZX*.\=
M.]B=)C.O(^V$_Z(ERRP:!AQ<[I)-;04=Y\M$R(]303T034=<D]T4(27T=\$P
M?+G^8= 9<V3$]\5O(!XX1TS0:SQZJ.^T.N5XAT7P%&.GC"Y2ER1N+#2G!9!>
MLS=1G@R&S9\CU.:2+4G21=.* 8T0BC@N$R>UM&,7SDI^SJ&/(7!U+<4K-9;"
MV6==%<D^2G#&>)>E_-DSF)'1I@T(/A@WTJRL.!W+9EQR1\:<\@+D@Q=5;5^C
MIJRU:EYNSV]G,,\XESQ$&XF7E*!%O*YD)&NG0:CT"%],>Q_VA(%"?P9,UD3*
M5*N9B+)CXDA-#Y?,+U\.9+6%$R27QJ2ML8G8'7;J<U;UIA6IL\6'Z 0%+ELJ
M0#]"E!7.VL3:4>T3%V"6'787\@(+6^X,SZG@2P]B6_U$>NQ("/IL/,8BXAE0
M_/^NP2YA+ /X,82I(P,/8B<6J_:#6B'D8#S_(L>46F1<J,!_SUCMQAM:K**Q
M8[=4T%Q<C..K?#'1@?B@PH/BPSJJH)RY2IFKIT.C3G93F&)]T.K \XZ98ADR
MR&'_.P/ZF+)G5>*P9B=Q)R*0=KHCKTB::RRW0(G.%Q58>H$B5.*+YR!1[F3!
M^I(EY]+/+PEU3F57R2'X0:ZM^+"W:]5BVUC0O!S<&C38Z9LC%1A**+I U3(V
M+8/CW'!E<"L&&ZNQ_4)E,I=J9!3';K!?I#1FPI$G7MF@8]E8G*A%L\:@RN(G
MED).K8\0A?BV;KS6MLP4P7\M4#&9IO#U"!4'S[!J2(]5W,PF _^[O557B@'@
MF<!D0C!XIT=0J,>$ F+;!IQ[(NX\S^GLF0/"C9B]WB/H6%0>.G#V:=)QL"(W
M5?;_U!P,!/4MEKVGI4C%,!8$U?!A6BEY_J#JFLFDM3.% X^21P0PCP:5O);\
M&4X2O5E!O"%RWVQ]L:>.:2]+CF= =L]MJP7*=AOC@*O?E70<J%4\;L+B^K;S
MSE'P@4OC7I46Z6Y**PYO*QV_)\]VWM<)V%ITY07-S(M4S_KCHJ.UF^O4Q4_M
MNZ2_<&9N6.!QA<WO#Q4KBZ4L']E'\M$,M4P<;UI-3NSN$RG)!YM1319LSP1Y
MQXQ7-PH"[Y-)'9]E#E,Z9O-5SG$QB;P#4]81GI"SZMD<\\&H0I+Z&!)<+R8N
M_ +Q!M+H8_"W=VI$:B>Y'[4CBCG&6J-""HGQ'BDF\>3>@%R8Z?H@#3323!((
:O2'D/E^XY9>5$B2 *1HS14^WD2W?%OSJ5 #Q
 
end

From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 20:29:50 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 20:29:50 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3ZAi-0000BCC; Wed, 9 Jun 93 16:03 PDT
Message-Id: <m0o3ZAi-0000BCC@crash.cts.com>
Date: 9 Jun 93 18:00:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Sprite example

/* Sprite example.  This example produces a tiny sprite in a custom     */
/* window on a custom screen.  This example does not explain:  how to   */
/* design sprite images; what you should know about sprites in general; */
/* the ChangeSprite() function.  If anyone needs this info, send me a   */
/* request and I'll try to do it justice.  -- Barry                     */

MODULE 'exec/memory'
MODULE 'graphics/sprite'
MODULE 'intuition/intuition'
MODULE 'intuition/screens'

ENUM ER_NONE,
     ER_MEM,
     ER_OPENSCREEN,
     ER_OPENWIN,
     ER_RESERVE_SPRITE,
     ER_USER_BREAK

RAISE ER_MEM IF AllocMem () = NIL

CONST SIZEOF_SPRITEDATA = 24

DEF myScreen : PTR TO screen,
    myWindow : PTR TO window,
    mySpriteData : PTR TO INT,
    mySpriteChipData : PTR TO INT,
    mySprite : simplesprite

PROC main () HANDLE
  DEF x, y,
      xDirection,
      yDirection,
      closeWin = FALSE,
      class,      /* IDCMP */
      code,       /* Code */
      myMessage : PTR TO intuimessage,
      i


  /*-------------------------------------------*/
  /* Allocate and initialize chip sprite data. */
  /*-------------------------------------------*/

  mySpriteChipData := AllocMem (SIZEOF_SPRITEDATA, MEMF_CHIP + MEMF_CLEAR)
  mySpriteData := [$0000, $0000,        /* for system use */
                   $2000, $0000,        /* line 1         */
                   $7000, $0000,        /* line 2         */
                   $F800, $7000,        /* line 3         */
                   $0000, $2000,        /* line 4         */
                   $0000, $0000] : INT  /* for system use */
  FOR i := 0 TO (SIZEOF_SPRITEDATA / 2 - 1)
    mySpriteChipData [i] := mySpriteData [i]
  ENDFOR


  /*--------------------------------------------------------*/
  /* Init simplesprite structure with chip data and others. */
  /*--------------------------------------------------------*/

  mySprite := [mySpriteChipData,  /* Pointer to imagedata. */
               4,                 /* Height.               */
               2,                 /* X-location on screen. */
               2,                 /* Y-location on screen. */
               -1] : simplesprite /* Sprite id (0-7 are    */
                                  /* the only valid ids).  */
                                  /* -1 is a sentinel      */
                                  /* value.                */


  /* Sprite position. */
  x := mySprite.x  /* These are passed to MoveSprite() to set the new */
  y := mySprite.y  /* sprite location.                                */

  /* Sprite direction. */
  xDirection := 0  /* These are added to x and y according to the rawkey */
  yDirection := 0  /* that is pressed (cursor keys.)                     */


  /*---------------------------*/
  /* Custom screen and window. */
  /*---------------------------*/

  IF (myScreen := OpenS (640, 200, 4, $8000, 'SPRITES')) = NIL THEN Raise (ER_OPENSCREEN)
  IF (myWindow := OpenW (0, 0, 639, 199,
                         (IDCMP_CLOSEWINDOW + IDCMP_RAWKEY),
                         (WFLG_SIMPLE_REFRESH + WFLG_CLOSEGADGET +
                          WFLG_ACTIVATE),
                         NIL, myScreen, CUSTOMSCREEN, NIL)) = NIL
    Raise (ER_OPENWIN)
  ENDIF


  /*----------------------------------------------------------------------*/
  /* Set color registers.  I know that my sprite will be using color regs */
  /* 20 - 23 because I'll be asking for sprite #2.                        */
  /*----------------------------------------------------------------------*/

  SetRGB4 (myScreen.viewport, 21, $F, $0, $0); /* Red */
  SetRGB4 (myScreen.viewport, 22, $F, $F, $0); /* Yellow */
  SetRGB4 (myScreen.viewport, 23, $0, $F, $0); /* Green */


  /*------------------------------------*/
  /* Make sure I can reserve sprite #2. */
  /*------------------------------------*/

  IF (GetSprite (mySprite, 2) <> 2) THEN Raise (ER_RESERVE_SPRITE)


  /*----------------------------------------------------------------*/
  /* Get IDCMP messages and move the sprite.  Exit when closewindow */
  /* gadget has been pressed.                                       */
  /*----------------------------------------------------------------*/

  WHILE closeWin = FALSE

    WHILE (myMessage := GetMsg (myWindow.userport))

      class := myMessage.class
      code  := myMessage.code

      ReplyMsg (myMessage)

      SELECT class
        CASE IDCMP_CLOSEWINDOW
          closeWin := TRUE

        CASE IDCMP_RAWKEY
          SELECT code
            /* Up Arrow. */
            CASE $4C;      yDirection := -1  /* Pressed */
            CASE $4C+$80;  yDirection :=  0  /* Released */

            /* Down Arrow. */
            CASE $4D;      yDirection := 1  /* Pressed */
            CASE $4D+$80;  yDirection := 0  /* Released */

            /* Right Arrow. */
            CASE $4E;      xDirection := 1  /* Pressed */
            CASE $4E+$80;  xDirection := 0  /* Released */

            /* Left Arrow. */
            CASE $4F;      xDirection := -1  /* Pressed */
            CASE $4F+$80;  xDirection :=  0  /* Released */
          ENDSELECT
      ENDSELECT
    ENDWHILE

    x := x + xDirection
    y := y + yDirection

    IF x > 303
      x := 303
    ELSEIF x < 0
      x := 0
    ENDIF
    IF y > 184
      y := 184
    ELSEIF y < 0
      y := 0
    ENDIF

    MoveSprite (0, mySprite, x, y)

    FOR i := 0 TO 10000 DO NOP
      /* Reduce this on 7MHz Amigas.  I've seen WaitTOF() used here to */
      /* slow down the sprite, but it made the sprite vibrate on my    */
      /* machine.                                                      */

  ENDWHILE

  freeMemory (0)

EXCEPT
  freeMemory (exception)
ENDPROC


PROC freeMemory (exitCode)
  IF mySprite.num <> -1 THEN FreeSprite (mySprite.num)
  IF mySpriteChipData THEN FreeMem (mySpriteChipData, SIZEOF_SPRITEDATA)
  IF myWindow THEN CloseW (myWindow)
  IF myScreen THEN CloseS (myScreen)
  WriteF ('Exit code \d\n', exitCode)
  CleanUp (exitCode)
ENDPROC

From crash!netcom.com!qed!aga Wed, 9 Jun 93 20:30:11 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 20:30:11 PST
Received: from netcomsv.netcom.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3a7k-0000JyC; Wed, 9 Jun 93 17:04 PDT
Received: from qed.UUCP by netcomsv.netcom.com with UUCP (4.1/SMI-4.1)
	id AA08086; Wed, 9 Jun 93 17:04:30 PDT
Received: by qed.UUCP (smail2.5)
	id AA08782; 9 Jun 93 12:14:22 PDT (Wed)
Comments: n
Message-Id: <iV6V5B2w165w@qedbbs.com>
Date: Wed, 09 Jun 93 12:12:29 PDT
Organization: The QED BBS, Lakewood CA
From: aga@qedbbs.com (Peter Dilley)
To: amigae@bkhouse.cts.com
Subject: Thanks Barry

PROC main()
DEF a,b
        WriteF ('Enter something > ')
        a := Inp (stdout) /* in C it seems to be stdin */

        /*---------------------------------------------------------------*/
        /* Try this:                                                     */

        WHILE Inp (stdout) <> 10 DO NOP  /* Flush the input buffer. */

        /* If you only want to get one character, do this.  10 is the    */
        /* decimal ascii code for the line-feed character, which is left */
        /* in the input buffer after pressing return.   This gets rid of */
        /* it.  Incidently, Peter, you can Inp() a whole string at a     */
        /* time using a loop, checking the value to tell when the end of */
        /* input has been reached.                                       */
        /*---------------------------------------------------------------*/

        WriteF ('You entered \c\n', a)

        WriteF ('Enter something else > ')
        b := Inp (stdout)  /* ditto */
        WHILE Inp (stdout) <> 10 DO NOP  /* Flush the input buffer. */
        WriteF ('You now entered \c\n', b)
ENDPROC


 
 
Thanks Barry. I had trouble mailing the list so all I could do was 
responds. Until I found out I wrote the mailing address down wrong :-D


------------------------------
aga@qedbbs.com (Peter Dilley)  or  qed!aga
The QED BBS -- (310)420-9327

From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 20:30:15 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 20:30:15 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3awF-0000gxC; Wed, 9 Jun 93 17:56 PDT
Message-Id: <m0o3awF-0000gxC@crash.cts.com>
Date: 9 Jun 93 19:52:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Linked Lists and Lists

This is in response to Son Le's query.  It doesn't really answer your question,
but the three examples I'm posting is what I've learned about lists in E so far.
This is the best I can do for a quick response.  I'll try to come up with some-
thing more relevant.  The distinction between an E list variable and an E linked
list is fairly demonstrated (I think) in this example, where the list variable
contains a sequential collection of like objects (?), and the linked list is a
collection of these things (I like to think of them as nodes) which are linked
together dynamically (whereas the list variable is linked statically, more like
an array.  Wouter, does this make sense?

-------------------------------------------------------------------------------

ENUM ER_NONE,
     ER_MEM


RAISE ER_MEM IF List () = NIL


DEF globalListElement


PROC print ()
  WriteF (' \d', globalListElement)
ENDPROC


PROC tailOfList (theList)
  DEF tail
  tail := theList
  WHILE Next (tail) <> NIL DO tail := Next (tail)
ENDPROC  tail


PROC appendList (theList, listToAppend)
  VOID Link (tailOfList (theList), listToAppend)
ENDPROC


PROC printAll (theList)
  WriteF ('\n  Contents of list: ')
  readAll (theList, `print ())
ENDPROC


PROC incrementAll (theList)
  writeAll (theList, `globalListElement + 1)
ENDPROC


PROC readAll (theList, func)
  DEF link
  link := theList
  WHILE link <> NIL
    ForAll ({globalListElement}, link, func)
    link := Next (link)
  ENDWHILE
ENDPROC


PROC writeAll (theList, func)
  DEF link
  link := theList
  WHILE link <> NIL
    MapList ({globalListElement}, link, link, func)
    link := Next (link)
  ENDWHILE
ENDPROC


PROC main () HANDLE
  DEF listHead,
      newListElement,
      counter

  /* Allocate and initialize front of list. */
  listHead := List (5)
  FOR counter := 0 TO 4
    ListAdd (listHead, [counter], ALL)
  ENDFOR

  /* We now have one list element containing a group of 5 long integers */
  /* which is pointed to by variable listHead.                          */

  printAll (listHead)

  /* Allocate another list element, initialize it, and append it to the */
  /* end of the list (after listHead and all subsequent Next ()         */
  /* elements, (academic at this point since there is no Next ().)      */
  newListElement := List (5)
  FOR counter := 5 TO 9
    ListAdd (newListElement, [counter], ALL)
  ENDFOR
  appendList (listHead, newListElement)

  /* We now have one list element containing a group of 5 long integers   */
  /* which is pointed to by variable listHead, and a Next () element      */
  /* which contains 5 long integers, and which can be accessed by using   */
  /* the internal list function Next () (demonstrated in function         */
  /* readAll () which is called by function printAll ().)  Incidently,    */
  /* the integers can only be accessed by the internal functions          */
  /* ForAll () and MapList () (see functions readAll () and writeAll ().) */

  printAll (listHead)

  /* Allocate another list element, initialize it, and append it to the   */
  /* end of the list (after listHead and all subsequent Next () elements. */
  newListElement := List (5)
  FOR counter := 10 TO 14
    ListAdd (newListElement, [counter], ALL)
  ENDFOR
  appendList (listHead, newListElement)

  /* We now have one list element containing a group of 5 long integers  */
  /* which is pointed to by variable listHead, and two Next () elements  */
  /* each containing 5 long integers, and which can be accessed by using */
  /* the internal list function Next ().                                 */

  printAll (listHead)

  /* Increment the value in each of the long integers stored in all the */
  /* list elements.                                                     */
  incrementAll (listHead)

  printAll (listHead)

  DisposeLink (listHead)  /* WARNING!  listHead will be a NIL pointer    */
                          /* after this function call even though it was */
                          /* not allocated using the List () function.   */

  WriteF ('\n\n')
  CleanUp (0)

EXCEPT

  IF exception = ER_MEM THEN WriteF ('\n\n *** Out of memory.\n\n')

  CleanUp (exception)

ENDPROC

From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 20:30:18 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 20:30:18 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3avw-0000C8C; Wed, 9 Jun 93 17:56 PDT
Message-Id: <m0o3avw-0000C8C@crash.cts.com>
Date: 9 Jun 93 19:53:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Linked Lists and Lists (3 of 3)

ENUM ER_NONE,
     ER_MEM,
     ER_USER_ABORT

RAISE ER_MEM IF List () = NIL,
      ER_MEM IF String () = NIL,
      ER_USER_ABORT IF CtrlC () = TRUE

OBJECT listElementType
  name, phoneNumber
ENDOBJECT

PROC newElementFor (name, phoneNumber)
  DEF el : PTR TO listElementType
  el := New (SIZEOF listElementType)
  el.name := String (10)
  StrCopy (el.name, name, ALL)
  el.phoneNumber := phoneNumber
ENDPROC  el

PROC phoneNumberFrom (theLink)
  DEF link : PTR TO listElementType
  link := ^theLink
ENDPROC  link.phoneNumber

PROC printAll (theList)
  DEF link,
      element : PTR TO listElementType
  link := theList
  WHILE link <> NIL
    element := ^link
    WriteF ('\s \d\n', element.name, element.phoneNumber)
    link := Next (link)
  ENDWHILE
ENDPROC

PROC tailOfList (theList)
  DEF tail
  tail := theList
  WHILE Next (tail) <> NIL DO tail := Next (tail)
ENDPROC  tail

PROC appendList (theList, name, phoneNumber)
  DEF newElement, newList

  newList := List (1)
  newElement := newElementFor (name, phoneNumber)
  ListCopy (newList, [newElement], ALL)

  IF ^theList = NIL  /* Empty list, special case. */
    ^theList := newList
  ELSE
    VOID Link (tailOfList (^theList), newList)
  ENDIF
ENDPROC

PROC sortList (theList)
  DEF listCurrent : PTR TO listElementType,
      listNext : PTR TO listElementType,
      temp

  listCurrent := ^theList
  WHILE listCurrent <> NIL
    listNext := listCurrent
    WHILE listNext := Next (listNext)
      CtrlC ()
      IF phoneNumberFrom (listCurrent) > phoneNumberFrom (listNext)
        temp := ^listCurrent
        ^listCurrent := ^listNext
        ^listNext := temp
      ENDIF
    ENDWHILE
    listCurrent := Next (listCurrent)
  ENDWHILE
ENDPROC
  /* sortList */

PROC main () HANDLE
  DEF listHead = NIL

  /* Allocate and initialize front of list. */
  appendList ({listHead}, 'Cookamonga', 4444444)
  printAll (listHead)

  /* Allocate and initialize a second list element, then link it. */
  appendList ({listHead}, 'Beeblebrox', 3333333)
  printAll (listHead)

  /* Allocate and initialize a third list element, then link it. */
  appendList ({listHead}, 'Anteater', 2222222)
  printAll (listHead)

  /* Allocate and initialize a fourth list element, then link it. */
  appendList ({listHead}, 'Aardvark', 1111111)
  printAll (listHead)

  /* Sort the list and display the contents. */
  sortList ({listHead})
  printAll (listHead)

  DisposeLink (listHead)  /* WARNING!  listHead will be a NIL pointer    */
                          /* after this function call even though it was */
                          /* not allocated using the List () function.   */

  WriteF ('\n\n')
  CleanUp (0)

EXCEPT
  IF exception = ER_MEM THEN WriteF ('\n\n *** Out of memory.\n\n')
  CleanUp (exception)
ENDPROC

From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 20:30:21 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 20:30:21 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3aw4-000229C; Wed, 9 Jun 93 17:56 PDT
Message-Id: <m0o3aw4-000229C@crash.cts.com>
Date: 9 Jun 93 19:53:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Linked Lists and Lists (2 of 3)

ENUM ER_NONE,
     ER_MEM


RAISE ER_MEM IF List () = NIL,
      ER_MEM IF String () = NIL


OBJECT listElementType
  name, phoneNumber
ENDOBJECT


DEF globalListElement : PTR TO listElementType


PROC newElement (name, phoneNumber)
  DEF el : PTR TO listElementType
  el := New (SIZEOF listElementType)
  el.name := String (10)
  StrCopy (el.name, name, ALL)
  el.phoneNumber := phoneNumber
ENDPROC  el


PROC print ()
  WriteF ('\s \d\n', globalListElement.name, globalListElement.phoneNumber)
ENDPROC


PROC tailOfList (theList)
  DEF tail
  tail := theList
  WHILE Next (tail) <> NIL DO tail := Next (tail)
ENDPROC  tail


PROC appendList (theList, listToAppend)
  VOID Link (tailOfList (theList), listToAppend)
ENDPROC


PROC printAll (theList)
  WriteF ('\n  Contents of list: \n')
  readAll (theList, `print ())
ENDPROC


PROC incrementAll (theList)
  writeAll (theList, `globalListElement + 1)
ENDPROC


PROC readAll (theList, func)
  DEF link
  link := theList
  WHILE link <> NIL
    ForAll ({globalListElement}, link, func)
    link := Next (link)
  ENDWHILE
ENDPROC


PROC writeAll (theList, func)
  DEF link
  link := theList
  WHILE link <> NIL
    MapList ({globalListElement}, link, link, func)
    link := Next (link)
  ENDWHILE
ENDPROC


PROC main () HANDLE
  DEF listHead = NIL,
      listCurrent,
      newListElement : PTR TO listElementType,
      name,
      phoneNumber,
      counter

  /* Allocate and initialize front of list. */
  listHead := List (1)
  newListElement := newElement ('Beeblebrox', 3333333)
  ListCopy (listHead, [newListElement], ALL)

  /* We now have one list element containing a name and a phone number */
  /* which is pointed to by variable listHead.                         */

  printAll (listHead)


  /* Allocate and initialize a second list element, then link it. */
  listCurrent := List (1)
  newListElement := newElement ('Aardvark', 1111111)
  ListCopy (listCurrent, [newListElement], ALL)
  appendList (listHead, listCurrent)

  /* We now have two list elements each containing a name and a phone     */
  /* number which is linked to the end of the list pointed to by variable */
  /* listHead.  It can be accessed by using the function Next () (see     */
  /* function readAll () which is called by function printAll ().)        */

  printAll (listHead)


  /* Allocate and initialize a third list element, then link it. */
  listCurrent := List (1)
  newListElement := newElement ('Cookamonga', 2222222)
  ListCopy (listCurrent, [newListElement], ALL)
  appendList (listHead, listCurrent)

  /* We now have three list elements each containing a name and a phone */
  /* number which is linked to end of the list pointed to by variable   */
  /* listHead.  It can be accessed by successive calls to the function  */
  /* Next () (see function readAll () which is called by function       */
  /* printAll ().)                                                      */

  printAll (listHead)


  DisposeLink (listHead)  /* WARNING!  listHead will be a NIL pointer    */
                          /* after this function call even though it was */
                          /* not allocated using the List () function.   */

  WriteF ('\n\n')
  CleanUp (0)

EXCEPT

  IF exception = ER_MEM THEN WriteF ('\n\n *** Out of memory.\n\n')

  CleanUp (exception)

ENDPROC

From crash!kirk.safb.af.mil!BWILLS Wed, 9 Jun 93 21:42:32 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 9 Jun 93 21:42:32 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3dsv-0000MtC; Wed, 9 Jun 93 21:05 PDT
Message-Id: <m0o3dsv-0000MtC@crash.cts.com>
Date: 9 Jun 93 23:03:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Fill and Arp.library

Bad news:  E does not have a module for arp.library.

Good news:  I have an arp_pragmas.h C header file which I managed to massage
enough to produce a module using Wouter's Pragma2Module program.

More bad news:  I now need a libraries/arp.m module that contains constants and
object definitions for use with arp.library.  This means that I need an
assembly source file containing this info in standard Commodore include file
format.  There is an include/arpbase.i file in the arp package, but I don't 
have the expertise to massage this one into a working state.  Anyone want to
try?  Maybe someone has already succeeded?

BTW, I'm still looking for some beginners' info on assembly programming for the
Amiga.  I mean rock-bottom beginner!  Good, simple, *BASIC* Assembly source
and/or tutorials.

-- Barry

From crash!wimsey.com!panam!emma!rick Thu, 10 Jun 93 09:41:12 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 10 Jun 93 09:41:12 PST
Received: from vanbc.wimsey.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3oMD-0000WwC; Thu, 10 Jun 93 08:16 PDT
Received: from panam by vanbc.wimsey.com with uucp
	(Smail3.1.28.1 #12) id m0o3oLY-0000UIC; Thu, 10 Jun 93 08:15 PDT
Received: by panam.wimsey.com (V1.16/Amiga)
	id AA004qf; Wed, 9 Jun 93 22:59:28 PST
Received: by emma.panam.wimsey.com (V1.16/Amiga)
	id AA00ep1; Wed, 9 Jun 93 22:55:12 PST
Date: Wed, 9 Jun 93 22:55:12 PST
Message-Id: <9306100655.AA00ep0@emma.panam.wimsey.com>
Reply-To: rick@emma.panam.wimsey.com
From: rick@emma.panam.wimsey.com (Rick Younie)
To: amigae@bkhouse.cts.com
Subject: Source - unrkv.e (was Re: [untitled reply])

> On the subject of your sources (or anyone's for that matter) post them!
> The more sources, the merrier and the more we can learn!
> 
> (To Norman Kraft, sorry Barry, how do we post sources? UUencode or plain text?
> Source line/length limit?)
> 
> Son Le

This is bit of an introduction.  I got started with E a few months
ago.  I was whining to Wouter about my several failed attempts to
learn C and he suggested I try this simpler language that he had
written. :)

E has allowed me to finally figure out where all the pieces fit on the
Amiga and I'm spending most of my time learning C now.

This is a program to list disk files that don't have their archive
bits set.  unrkv ? for usage.  Criticism welcome.  Not sure what the
group will decide on encoding/archiving/ascii, but this one is 1/3
smaller this way, so here goes.

begin 777 unrkv.LHA
M'2\M;&@U+3@%   Q#   2[3)&@  !W5N4FMV+F6E&P1?:]NQIMSCYF_P#Y59X
M8 I0DWQXM*L\QRT6(%3"*VJ2*K@?$.T;?"Y\Y8;\X^][F !#:ZI9;;X-DM^ X
MMN T;;;=N67PLO4SQ]_A;2\]&K/WA\5TSJ2#!Y_@F:9%O4B=$UOYJFH3KMYUX
MS"9$:O>@)D=Z00$JJ&@O0")90T*E31<D4R@%3@/^G.U;%)HJ,J-*_F#=*0IGX
M0S/I5X)D<9D734RM5JE3P-P^TSEY>IJESBHM=HS^>F;,EA+;-K;M3U,[._P(X
M^YR_/NMVPH5^B1&7'W^G'?ZL,05I%BT"Z*S[\6+JZ0BC^6+'BBM/O'QPXX?RX
M=SB^$'3@V"(<L>&%W+IBZ=A9!'[,CN9<:DA'?^5_!&(8>'X_'+%D=R$4XDC@X
MP9(@VJP,'0&%8QXKV+V+!AXKLA<7BB94Z>(XV-(9"UDL)"LL?5%M9XA.1K%3X
M]U1J^_?BZ'CA0)(4$KW1!AR1//7+(9YI!F$*AT2H[@:L9$YY:9$G)<X?G#[WX
M1XX1GBJ>O8#VP8K^&)]]XDLJ?0NZ167#-*+E"HWB_W-@/1#.ZCKW0#[;L$<<X
M'Q#&+\X\7L(N1/GTK94\+Q4?W?=EC#+C<0DTZDVAILU+5.T9\"TZ)P0QB-94X
M"4&]U!-2\\J]S$A6S:JD9E=QE10V'2A@LD*/FI&K;,D,\J4,&H8CKHQQ@)M=X
MO<Q+K<V/HYPOXP-QA'=HCQ08QEKN;>[>C2B2 1P5ZU]3+D%SIM9!AS<R5K1FX
MUH!=JP<C QQBQ=<WCO;(,C1CVN&Y?;%B"-"J!GEMIDL.5VPM.E;M<5'*"[> X
MJ 3=A]X;"Z$I!3KDB-!_$AX(E5)QN3>-]/?[< V+UW0GNWB9CK5VDLCF+=O.X
MJ>JB/!##%DR?*.*"_8$AVU/'/@J B"]4[C,@AH@6\(7;)>SM9K;KU)]7-]'LX
M*Q$S I0%A>HI9NP'ZP3/(>"JZ"V!<=.[9-:[>&O3"F>IJ; >@.=RZJ ]>PI[X
M0]7K#S7?-8 :R/X&W!&DSPH%[<T+I&"E,4(*&V_%?.'NV/&Z-I1ZWQK](2+#X
M0+:)1GTU1X44M^;A(!T>!JS6/3B!^BP%USGV<0_>Q34B]%;L9V2=?WC0WCRPX
M8>R<:?COV%!5.)S#%Z+X0Q>[*^]DBPQ0Y03XYTGE>%3PP<,3A/YN30QYHGK5X
MFC<-MDB2BWM-L/JL8'$_JHJ'!_H0."Z0%SAV4<D!RHZX,@>3[@D+-F)C%LLVX
M0MVYUE'JF8:7227 Y_8W%R)%I<Y0TH%2?<*D^[4Q94>'&IT'QP+,2EU[KK[[X
M YZ;Y9$'Q^=M$U#A_:<W-T&_26JF=P0\I@JANE#=Q"[:7<=E<W3T\LL(?[EAX
M>>G3XM$W=GK*SON24I2(BC*>S!/SWVCE3]RO<\KV30HK.4SQ>;\Q. -=F=_6X
M_8S*JN5V]/=A=B\<0M%RP2[-7O\X'RP$'GZT<? O'5/:!T<%-)2!O^*^XT5JX
M8MHMH-:QWR_9S\U@#MN>>_RSNL;0VR(;'%-E]OI%VU>.+R?,?$J_<S.X*[>/X
M^\^U-DQ(TCX.@GF=PWWO[8G([AVZ'%3AXBS=*A_%3)_N1W_QZ]9PFJI5/*N?X
M@F14'E@"O4)L!YPR5 O* 7GYSO,$9"O5KVF%H#_(,.'8.@DDWC>*$_HGK7*UX
MIR@JLSV,?]8D?KJ,_['X?BO^D-^&CJH'P<T9EL;9L\L+SLE.\MMCYDM,LAX7X
MO*X=U&'E"D/IDUWHO=X_H:42 UBZ<SL)%%.;DQ ^/SQ;.*./''LR.3)F=FM\X
2L;(S\-G#L(Y9>MVC"K':\^  X
 X
end

Rick
--
                        ----+----
 rick@emma.panam.wimsey.com | "Life sucks, but Death swallows."
 rick@emma.amsbbs.bc.ca     | 
 PGP2.2 key on request      |
                        ----+----

From crash!kirk.safb.af.mil!BWILLS Thu, 10 Jun 93 14:08:11 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 10 Jun 93 14:08:11 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3s2N-0000tEC; Thu, 10 Jun 93 12:11 PDT
Message-Id: <m0o3s2N-0000tEC@crash.cts.com>
Date: 10 Jun 93 14:07:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: LIST1.E (re:  Son Le's linked list questions)

/* LIST1.E - In response to Son Le's linked list questions.  More complete */
/* discussion appears at the end of LIST2.E.                               */

/*
Does anyone know if you can use MapList, ForAll, Exists list functions on
linked lists? Also how are linked lists stored in memory and finally, what's
the difference between these two examples:
*/
PROC main ()
  DEF a [3] : STRING,
      b [3] : STRING,
      c [3] : STRING,
      d [3] : STRING

/* NOTE:  if you make a,b,c,d pointers and create them as follows, this
   program will do exactly the same thing.
  a := String (3)
  b := String (3)
  c := String (3)
  d := String (3)
*/
  StrCopy (a, 'aaa', ALL)
  StrCopy (b, 'bbb', ALL)
  StrCopy (c, 'ccc', ALL)
  StrCopy (d, 'ddd', ALL)

  /* Note:  you are about to lose the string pointed to by d! */

  /*------------*/
  d:=Link(c,NIL)
  /*------------*/

  /* c.next points to NIL (the initial value); d now points to the string */
  /* 'ccc' because Link() returns the address of c.                       */
  WriteF ('1.  c=\s d=\s\n', c, d)

  /*----------*/
  d:=Link(b,c)
  /*----------*/

  /* b.next points to the string 'ccc'; d now points to the string 'bbb' */
  /* because Link() returns the address of b.                            */
  WriteF ('2.  b=\s c=\s b.next=\s d=\s\n', b, c, Next(b), d)

  /*----------*/
  d:=Link(a,b)
  /*----------*/

  /* a.next points to the string 'bbb'; d now points to the string 'aaa' */
  /* because Link() returns the address of a.                            */
  WriteF ('3.  a=\s b=\s a.next=\s d=\s\n', a, b, Next(a), d)


  /* Finally, everything that can be gotten from the linked strings:  */
  WriteF ('a=\s  -> \s\n', a, Next(a))
  WriteF ('b=\s  -> \s\n', b, Next(b))
  WriteF ('c=\s  -> \s\n', c, IF Next(c)=NIL THEN 'NIL' ELSE Next(c))
  WriteF ('d=\s  -> \s\n', d, Next(d))

  /*************************************************************************/
  /* Output looks like this:                                               */
  /*                                                                       */
  /* a=aaa  -> bbb                                                         */
  /* b=bbb  -> ccc                                                         */
  /* c=ccc  -> NIL                                                         */
  /* d=aaa  -> bbb                                                         */
  /*                                                                       */
  /* If you compare the output of this program to that of list2.e you will */
  /* see that the strings pointed to by a,b,c,d have the same values, but  */
  /* the strings that they are linked to are not the same.                 */
  /*************************************************************************/

  CleanUp (0)
ENDPROC

From crash!kirk.safb.af.mil!BWILLS Thu, 10 Jun 93 14:08:21 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 10 Jun 93 14:08:21 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3sJq-0000ZfC; Thu, 10 Jun 93 12:29 PDT
Message-Id: <m0o3sJq-0000ZfC@crash.cts.com>
Date: 10 Jun 93 14:27:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: LIST2.E (re:  Son Le's questions about linked lists)

/* LIST2.E - In response to Son Le's linked list question. */

PROC main ()
  DEF a [3] : STRING,
      b [3] : STRING,
      c [3] : STRING,
      d [3] : STRING

  StrCopy (a, 'aaa', ALL)
  StrCopy (b, 'bbb', ALL)
  StrCopy (c, 'ccc', ALL)
  StrCopy (d, 'ddd', ALL)

  WriteF ('d.next=\s\n', IF Next(d)=NIL THEN 'NIL' ELSE Next(d))

  /*------------*/
  d:=Link(d,NIL)    /* At this point does nothing:  d.next is already NIL. */
  /*------------*/

  /*------------*/
  d:=Link(c,d)
  /*------------*/

  /* c.next points to the string 'ddd'; d now points to the string 'ccc' */
  /* because Link() returns the address of c.  Now the string 'ddd' can  */
  /* only be accessed via Next(c).                                       */
  WriteF ('a=\s b=\s c=\s d=\s c.next=\s\n', a, b, c, d, Next(c))

  /*------------*/
  d:=Link(b,d)
  /*------------*/

  /* b.next points to the string 'ccc' because d was reassigned the     */
  /* address of 'ccc' in the previous Link() statement; d now points to */
  /* the string 'bbb' because Link() returns the address of b.          */
  WriteF ('b=\s b.next=\s d=\s\n', b, Next(b), d)

  /*------------*/
  d:=Link(a,d)
  /*------------*/

  /* a.next points to the string 'bbb' because d was reassigned the     */
  /* address of 'bbb' in the previous Link() statement; d now points to */
  /* the string 'aaa' because Link() returns the address of a.          */
  WriteF ('a=\s a.next=\s d=\s\n', a, Next(a), d)

  /* Finally, everything that can be gotten from the linked strings:  */
  WriteF ('a=\s  -> \s\n', a, Next(a))
  WriteF ('b=\s  -> \s\n', b, Next(b))
  WriteF ('c=\s  -> \s\n', c, Next(c))
  WriteF ('d=\s  -> \s\n', d, Next(d))

  /***************************************************************************/
  /* The final output of the program is:                                     */
  /*                                                                         */
  /* a=aaa  -> bbb                                                           */
  /* b=bbb  -> ccc                                                           */
  /* c=ccc  -> ddd                                                           */
  /* d=aaa  -> aaa                                                           */
  /*                                                                         */
  /* Compare the values pointed to by the Next() links in this program and   */
  /* list1.e.  This is the difference in what the code does, not to mention  */
  /* the different routes used to get there.                                 */
  /*                                                                         */
  /* Hope this sheds *some* light!  It might help if you're familiar with    */
  /* how the DrawBorder() graphics function works on border structures that  */
  /* are linked together, and how the DrawText() intuition function works on */
  /* intuitext structures that are linked together.  Also, the functions     */
  /* MapList(), ForAll(), and Exists() only work on a single list variable,  */
  /* NOT on linked lists.  I haven't found a good example for using these    */
  /* yet.  Maybe later.  -- Barry                                            */
  /***************************************************************************/

  CleanUp (0)
ENDPROC

From crash!kirk.safb.af.mil!BWILLS Thu, 10 Jun 93 17:50:45 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 10 Jun 93 17:50:45 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3wFA-0000KbC; Thu, 10 Jun 93 16:41 PDT
Message-Id: <m0o3wFA-0000KbC@crash.cts.com>
Date: 10 Jun 93 18:37:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: LIST1.E (re:  Son Le's lists/linked lists questions)

/* It looked like this was undelivered, so here it is again. */
/* LIST1.E - In response to Son Le's linked list questions.  More complete */
/* discussion appears at the end of LIST2.E.                               */

/*
Does anyone know if you can use MapList, ForAll, Exists list functions on
linked lists? Also how are linked lists stored in memory and finally, what's
the difference between these two examples:
*/
PROC main ()
  DEF a [3] : STRING,
      b [3] : STRING,
      c [3] : STRING,
      d [3] : STRING

/* NOTE:  if you make a,b,c,d pointers and create them as follows, this
   program will do exactly the same thing.
  a := String (3)
  b := String (3)
  c := String (3)
  d := String (3)
*/
  StrCopy (a, 'aaa', ALL)
  StrCopy (b, 'bbb', ALL)
  StrCopy (c, 'ccc', ALL)
  StrCopy (d, 'ddd', ALL)

  /* Note:  you are about to lose the string pointed to by d! */

  /*------------*/
  d:=Link(c,NIL)
  /*------------*/

  /* c.next points to NIL (the initial value); d now points to the string */
  /* 'ccc' because Link() returns the address of c.                       */
  WriteF ('1.  c=\s d=\s\n', c, d)

  /*----------*/
  d:=Link(b,c)
  /*----------*/

  /* b.next points to the string 'ccc'; d now points to the string 'bbb' */
  /* because Link() returns the address of b.                            */
  WriteF ('2.  b=\s c=\s b.next=\s d=\s\n', b, c, Next(b), d)

  /*----------*/
  d:=Link(a,b)
  /*----------*/

  /* a.next points to the string 'bbb'; d now points to the string 'aaa' */
  /* because Link() returns the address of a.                            */
  WriteF ('3.  a=\s b=\s a.next=\s d=\s\n', a, b, Next(a), d)


  /* Finally, everything that can be gotten from the linked strings:  */
  WriteF ('a=\s  -> \s\n', a, Next(a))
  WriteF ('b=\s  -> \s\n', b, Next(b))
  WriteF ('c=\s  -> \s\n', c, IF Next(c)=NIL THEN 'NIL' ELSE Next(c))
  WriteF ('d=\s  -> \s\n', d, Next(d))

  /*************************************************************************/
  /* Output looks like this:                                               */
  /*                                                                       */
  /* a=aaa  -> bbb                                                         */
  /* b=bbb  -> ccc                                                         */
  /* c=ccc  -> NIL                                                         */
  /* d=aaa  -> bbb                                                         */
  /*                                                                       */
  /* If you compare the output of this program to that of list2.e you will */
  /* see that the strings pointed to by a,b,c,d have the same values, but  */
  /* the strings that they are linked to are not the same.                 */
  /*************************************************************************/

  CleanUp (0)
ENDPROC

From crash!kirk.safb.af.mil!BWILLS Thu, 10 Jun 93 17:50:47 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 10 Jun 93 17:50:47 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3wEv-00003sC; Thu, 10 Jun 93 16:41 PDT
Message-Id: <m0o3wEv-00003sC@crash.cts.com>
Date: 10 Jun 93 18:38:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: LIST2.E (re:  Son Le's lists/linked lists questions)

/* It looked like this was undelivered, so here it is again.  This is part 2. */
/* LIST2.E - In response to Son Le's linked list question. */

PROC main ()
  DEF a [3] : STRING,
      b [3] : STRING,
      c [3] : STRING,
      d [3] : STRING

  StrCopy (a, 'aaa', ALL)
  StrCopy (b, 'bbb', ALL)
  StrCopy (c, 'ccc', ALL)
  StrCopy (d, 'ddd', ALL)

  WriteF ('d.next=\s\n', IF Next(d)=NIL THEN 'NIL' ELSE Next(d))

  /*------------*/
  d:=Link(d,NIL)    /* At this point does nothing:  d.next is already NIL. */
  /*------------*/

  /*------------*/
  d:=Link(c,d)
  /*------------*/

  /* c.next points to the string 'ddd'; d now points to the string 'ccc' */
  /* because Link() returns the address of c.  Now the string 'ddd' can  */
  /* only be accessed via Next(c).                                       */
  WriteF ('a=\s b=\s c=\s d=\s c.next=\s\n', a, b, c, d, Next(c))

  /*------------*/
  d:=Link(b,d)
  /*------------*/

  /* b.next points to the string 'ccc' because d was reassigned the     */
  /* address of 'ccc' in the previous Link() statement; d now points to */
  /* the string 'bbb' because Link() returns the address of b.          */
  WriteF ('b=\s b.next=\s d=\s\n', b, Next(b), d)

  /*------------*/
  d:=Link(a,d)
  /*------------*/

  /* a.next points to the string 'bbb' because d was reassigned the     */
  /* address of 'bbb' in the previous Link() statement; d now points to */
  /* the string 'aaa' because Link() returns the address of a.          */
  WriteF ('a=\s a.next=\s d=\s\n', a, Next(a), d)

  /* Finally, everything that can be gotten from the linked strings:  */
  WriteF ('a=\s  -> \s\n', a, Next(a))
  WriteF ('b=\s  -> \s\n', b, Next(b))
  WriteF ('c=\s  -> \s\n', c, Next(c))
  WriteF ('d=\s  -> \s\n', d, Next(d))

  /***************************************************************************/
  /* The final output of the program is:                                     */
  /*                                                                         */
  /* a=aaa  -> bbb                                                           */
  /* b=bbb  -> ccc                                                           */
  /* c=ccc  -> ddd                                                           */
  /* d=aaa  -> aaa                                                           */
  /*                                                                         */
  /* Compare the values pointed to by the Next() links in this program and   */
  /* list1.e.  This is the difference in what the code does, not to mention  */
  /* the different routes used to get there.                                 */
  /*                                                                         */
  /* Hope this sheds *some* light!  It might help if you're familiar with    */
  /* how the DrawBorder() graphics function works on border structures that  */
  /* are linked together, and how the DrawText() intuition function works on */
  /* intuitext structures that are linked together.  Also, the functions     */
  /* MapList(), ForAll(), and Exists() only work on a single list variable,  */
  /* NOT on linked lists.  I haven't found a good example for using these    */
  /* yet.  Maybe later.  -- Barry                                            */
  /***************************************************************************/

  CleanUp (0)
ENDPROC

From crash!minyos.xx.rmit.OZ.AU!s924723 Thu, 10 Jun 93 19:51:43 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 10 Jun 93 19:51:43 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3yXL-00003zC; Thu, 10 Jun 93 19:08 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA28607
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Fri, 11 Jun 1993 12:08:04 +1000
Received: by minyos.xx.rmit.oz.au
Date: Fri, 11 Jun 93 12:08:00 EST
Message-Id: <9306110208.6530@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


> The program I have written is another version of Mines.  I will
> probably be releasing it shortly.  (Its called JMines)

> My question is what is the E equivalent to the c expression:

> UWORD penvalue = myDrawInfo->dri_Pens[PENNAME]

> I would have thought it was:

> penvalue:= mydrawinfo.pens[PENNAME]

E can handle only one reference at a time, so to overcome this problem you
must take two steps. I don't have the relevant info, but this is how you'd
do it..

pens:=mydrawinfo.pens  /* must be of same type (or ptr to same type) */
penvalue:=pens[PENNAME]

Works the same for a double pointer reference.
eg. in C, a:=x->y.z
       E, b:=x.y       /* again they must be the same type or */
          a:=b.z       /* 'b' must be a ptr to the same 'z' OBJECT */

Hope it helps.
Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Thu, 10 Jun 93 19:51:45 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 10 Jun 93 19:51:45 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3yXX-0000BCC; Thu, 10 Jun 93 19:08 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA28609
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Fri, 11 Jun 1993 12:08:16 +1000
Received: by minyos.xx.rmit.oz.au
Date: Fri, 11 Jun 93 12:08:13 EST
Message-Id: <9306110208.6548@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


To Mike,

If you want to open a file for reading/writing use:

  DEF infile=NIL, oufile=NIL, string[80]:STRING

  infile:=Open('input_file',OLDFILE)
  outfile:=Open('output_file',NEWFILE)

If 'input_file' doesn't exist infile will be NIL, same for 'output_file'.
However, please note that if 'output_file' exists it will be overwritten!
When you're done with the files, remember to Close() each file. (ie. infile,
outfile).

Now to read in a string, use ReadStr(infile,string) or
Fgets(infile,string,80) if you've got wb2.0. See the Reference manual for
more info in string manipulation.

Bye!
Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Thu, 10 Jun 93 19:51:48 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 10 Jun 93 19:51:48 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o3yfM-0000X5C; Thu, 10 Jun 93 19:16 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA28675
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Fri, 11 Jun 1993 12:16:22 +1000
Received: by minyos.xx.rmit.oz.au
Date: Fri, 11 Jun 93 12:16:16 EST
Message-Id: <9306110216.7020@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


To Barry,

Firstly, thanks for all your examples! I haven't time to examine them yet,
so I can't comment on them or ask any extra questions. It'll take me a while
to go through them! (;

Secondly, thank's for epp014b! Again I haven't tried it out yet. It should be
okay.. Btw: I went through epp013b with a fine comb and was able to increase
the speed by roughly 30% (that's a third faster, hoping for a half! :)
I'll see what I can do with epp014b.. I'll post the source (here?).

Concerning assembly, I know the basics.. and that's all I can say *grin*.
If you've got any problems.. I might be able to help *grin*.

If you post the arp stuff, I'll convert it for ya!

Bye!
Son Le

From crash!minster.york.ac.uk!ejad-a Fri, 11 Jun 93 01:43:43 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 11 Jun 93 01:43:43 PST
Received: from minster.york.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o44Bl-0000VSC; Fri, 11 Jun 93 01:10 PDT
Message-ID: <swordfish.739786217@minster.york.ac.uk>
Date: Fri, 11 Jun 1993 09:08:55 +0100
In-Reply-To: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
       "" (Jun 11, 12:08pm)
X-Mailer: Mail User's Shell (7.2.5 10/14/92 (ORBIT))
From: ejad-a@minster.york.ac.uk (Edd Dumbill)
To: amigae@bkhouse.cts.com
Subject: E dereferencing

On Jun 11, 12:08pm in "", Son Huu Le wrote:
> E can handle only one reference at a time, so to overcome this problem you
> must take two steps. I don't have the relevant info, but this is how you'd
> do it..

Is this true? If so, is it going to be improved in further versions of E?
Was this decision made for a syntactical reason, or is it because its just
not been implemented yet. Surely it is a bit of a nuisance at the moment,
especially for anything involving operating system structures.

> Son Le

Edd.


-- 
Edd Dumbill, Dept. of Computer Science, University of York,
              Heslington, York, YO1 5DD, UK
         ``Let's rap some quack!'' - Edd the Duck
-----------------------------------------------------------
             'Amusing statement' of the day:

From crash!aston.ac.uk!cs.aston.ac.uk!nichowlw Fri, 11 Jun 93 03:46:00 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 11 Jun 93 03:46:00 PST
Received: from sun2.nsfnet-relay.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o46EE-00008hC; Fri, 11 Jun 93 03:20 PDT
Received: from 134.151.52.215 by email.aston.ac.uk with SMTP (PP) 
          id <26761-0@email.aston.ac.uk>; Fri, 11 Jun 1993 11:20:17 +0100
Via: uk.ac.aston; Fri, 11 Jun 1993 11:20:35 +0100
Date: Fri, 11 Jun 93 11:24:16 BST
Message-Id: <10215.9306111024@cs.aston.ac.uk>
X-Sun-Charset: US-ASCII
content-length: 1042
From: nichowlw <nichowlw@cs.aston.ac.uk>
To: amigae@bkhouse.cts.com
Subject: Request


Sorry this message is not concerning E exactly.

 I am looking for anyone who is subscribed to this list who is in the UK, is
there anyone?, if so then please mail me, not the list, as not to clutter it
with un-important messages, like this.

About E
=======
 I have only just started using E, and have not done any C before, so am taking
it slowly, but the information from this list is helping alot, thanks everyone.
 Does anyone know what manuals I need, I know the reference manuals are almost
essential, but I might upgrade to a new OS(and computer) in a few months and 
dont want to shell out another load of money on just updated versions of the
manuals. Would I be able to program E with the 1.3 includes using the 2.0 or
3.0 reference manuals ? Or is there other books that would help ?
 I wouldnt say I am a beginner to programming, I have used Pascal,Modula-2 and
done a fair bit of 68000.


Thankyou all, and sorry I have not been able to contribute to the list more, but
hopefully will in the future.

Warren Nicholls.


	



 

From crash!heifetz.msen.com!plexus!root Fri, 11 Jun 93 09:55:26 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 11 Jun 93 09:55:26 PST
Received: from heifetz.msen.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4BR3-0000SuC; Fri, 11 Jun 93 08:54 PDT
Received: by heifetz.msen.com (/\==/\ Smail3.1.22.1 #22.11)
	id <m0o4BFb-000HcvC@heifetz.msen.com>; Fri, 11 Jun 93 11:42 EDT
X-Mailer: SCO System V Mail (version 3.2)
Date: Fri, 11 Jun 93 11:33:17 EDT
Message-ID:  <9306111133.aa15187@plexus.msp.com>
From: root@msp.com (Superuser)
To: amigae@bkhouse.cts.com
Subject: Modules

Howdy all.

I'm not sure if this mail list is the appropriate place for novices to ask
stupid questions, but I hope so.  I'm no stranger to programming, having
programmed in about 10 different languages in the Dos and Unix worlds.
However I'm just starting to program my Amiga and decided to start with E.
My C experience is minimal and did not require extensive use of libraries
or anything system-level.

Anyways, I'm trying to get a handle on modules and libraries.  I understand
how to include a module and what it does, but I have a couple questions.

1) Are the function calls in a module always calls to a library from the LIBS:
   directory?

2) What is the relation/difference between modules in the EMODULES: directory
   and modules in the subdirectories of EMODULES:?

3) Where would I find documentation for library functions in the modules?

Thanks so much.  You can reply to this list if you think it would be
beneficial to others, or simply e-mail me directly.

---------------------------------------
Jerry Lee "3P"             //   Amiga
email: jfos@msp.com     \x//    Power

From crash!minyos.xx.rmit.OZ.AU!s924723 Fri, 11 Jun 93 19:50:14 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 11 Jun 93 19:50:14 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4Kkf-0000YBC; Fri, 11 Jun 93 18:51 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA05495
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sat, 12 Jun 1993 11:51:19 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306120151.12402@minyos.xx.rmit.oz.au>
Date: Sat, 12 Jun 1993 11:51:14 +1000 (EST)
In-Reply-To: <9306111304.10320@minyos.xx.rmit.oz.au> from "Barry D. Wills" at Jun 11, 93 08:01:00 am
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 2714
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: BWILLS@kirk.safb.af.mil (Barry D. Wills)
Cc: amigae@bkhouse.cts.com
Subject: Sources

> 
> Hi, Son Le. Just want to make sure you got the two linked list examples I send
> to the mailing list for you.  Now, I sent three earlier, called something like
> listexample1.e thru *3.e. More recently I sent two called list1.e and list2.e.
> The latter 2 deal with your question about "what's the diff between these two
> list code segments?"  Did you get 'em?

Hmmm.. I don't really know. If you mean through private email, then no. If you
mean through the maillist.. then yep. I don't know if I got all the examples,
but I did get a lot though. (;  (Oh yeah, I've got 3meg RAM).

> Also, I'm *VERY* interested to see what you did to speed up epp013.  I do hope
> the modifications are KS1.3 compatible; if not, I'll have to start ditributing
> two versions, one for each target (eesh).  If you hurry and send me what you
> have for epp013 then I can try to apply what's there to epp014 before I
> officially release it.

I was gonna modify epp014b according to the way I modified epp013b..
And no it's not 2.0 specific.. I tried to retain your code/style as much as
possible.. I'll send it to you (epp013b).

> Thanks for taking such an interest in epp.  Since you are the most proavtive
> fellow E programmer (or so it seems to me) that I've dealt with, you are
> probably most qualified to advise me:  what do you think about my code?  Is it
> understandable, readable?Or does it give you a headache when you try to follow

Qualified? Moi? (; I like E, but I still haven't fully grasp everything...
And one thing I still can't do properly (confidently) is passing of different
types of variables.. as you did in EPP (eg. ^variable, but only 'var' if var
is a ptr to something, etc). That's one thing I found hard to comprehend about
your source. *grin*

Actually being verbose is good and more readable.. After a while, yeah, I say
your code is easy to understand, though I don't like your proc_[space]_() (;
and the way you passed like 10 variables to a procedure. If it's that much
I usually make it global and not pass it at all (although strictly speeching
your method is correct).

> it?  I know I tend to be verbose.  And often I do things the long way just to
> the code more understandable (even though performance will suffer a little)
> and I like a lot of whitespace (sorry, I intend to keep the space between the
> proc name and parentheses :)  What I'm really asking is "do you think my
> programming style improved the source code?"  Awaiting your *speedy* reply |-)

Why did you have to say *speedy*? Forced me to reply to you now instead of
latter! Spaces are good, and comments are best, but there's a trade-off between
wasting space/verbose and good, small fast routines.

Later
Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Fri, 11 Jun 93 19:50:17 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 11 Jun 93 19:50:17 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4Kn8-0000g4C; Fri, 11 Jun 93 18:53 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA05503
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sat, 12 Jun 1993 11:53:50 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306120153.12432@minyos.xx.rmit.oz.au>
Date: Sat, 12 Jun 1993 11:53:45 +1000 (EST)
In-Reply-To: <swordfish.739786217@minster.york.ac.uk> from "Edd Dumbill" at Jun 11, 93 09:08:55 am
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 682
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: ejad-a@minster.york.ac.uk (Edd Dumbill)
Cc: amigae@bkhouse.cts.com
Subject: Re: E dereferencing

> 
> On Jun 11, 12:08pm in "", Son Huu Le wrote:
> > E can handle only one reference at a time, so to overcome this problem you
> > must take two steps. I don't have the relevant info, but this is how you'd
> > do it..
> 
> Is this true? If so, is it going to be improved in further versions of E?
> Was this decision made for a syntactical reason, or is it because its just
> not been implemented yet. Surely it is a bit of a nuisance at the moment,
> especially for anything involving operating system structures.
 
Not implemented yet.. I think Wouter's already implemented in the next version
of E.. Definitely would be a huge nuisance, but for now I can live with it.

Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Fri, 11 Jun 93 19:50:19 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 11 Jun 93 19:50:19 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4Kqw-0000CbC; Fri, 11 Jun 93 18:57 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA05531
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sat, 12 Jun 1993 11:57:42 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306120157.12551@minyos.xx.rmit.oz.au>
Date: Sat, 12 Jun 1993 11:57:38 +1000 (EST)
In-Reply-To: <9306111827.AA04067@madness.East.Sun.COM> from "Michael Soucy - Sun USOPS CSU Test Engineering" at Jun 11, 93 02:27:06 pm
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 613
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: Michael.Soucy@east.sun.com (Michael Soucy - Sun USOPS CSU Test Engineering)
Cc: amigae@bkhouse.cts.com
Subject: Re: Strings

> 
> Hi,
> 
> Thanx for the reply (was wondering if I was going to get any! I want to parse
> some information in the string though, I can't think of the format, but it
> will include date, TAGNAME (which is the echo area) some ()'s, etc....If I can
> bring in a copy of my log file so we can go from there.
> 
> Mike
 
Was fairly simple question and I thought someone else might have already
answered.. But I thought I might as well answer it just in case. (;
For the date, you must copy it into an Estring and then Val() convert it to a
number form... A copy of the log would be _most_ helpful..

Bye!
Son Le


From crash!sirius.UVic.CA!jblake Fri, 11 Jun 93 21:48:39 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 11 Jun 93 21:48:39 PST
Received: from sol.UVic.CA by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4N2a-0000gTC; Fri, 11 Jun 93 21:18 PDT
Received: from sirius.UVic.CA by sol.UVic.CA (4.1/SMI-4.0.3-UVic-2.43TMX)
	id AA11371; Fri, 11 Jun 93 21:18:01 PDT
Received: from stokes.UVic.CA by sirius.UVic.CA (4.1/SMI-4.1-Engr.UVic.CA-E)
	id AA15619; Fri, 11 Jun 93 21:17:59 PDT
Date: Fri, 11 Jun 93 21:17:59 PDT
Message-Id: <9306120417.AA15619@sirius.UVic.CA>
From: jblake@sirius.UVic.CA (James  Blake)
To: amigae@bkhouse.cts.com
Subject: drawinfo structure


Thanks to Son Le I now understand the problem I was having before (E only
handles one reference at a time.

However, I am still having a problems getting penvalues for the SHINEPEN
and SHADOWPEN etc..  of the default Public Screen.

What I have been doing can be summarized as follows  (Error checking
left out for clarity.)

scr:=LockPubScreen(NIL)
visual:=GetVisualInfoA(scr,NIL)
scrdrawinfo:=GetScreenDrawInfo(NIL)

pens:=scrdrawinfo.pens        
			      
shine:=pens[SHINEPEN]         
shadow:=pens[SHADOWPEN]       
hilite:=pens[HIGHLIGHTTEXTPEN]

The values I am getting for shine etc are definetly not the right numbers

I also checked some of the other values  in the object drawinfo
and the values for drawinfo.depth, and drawinfo,numpens were not right.

I noticed that the text file I have describing the drawinfo object
goes like this:

(---) OBJECT drawinfo                    
(  0)   version:INT                      
(  2)   numpens:INT                      
(  4)   pens:LONG                        
(  8)   font:LONG                        
( 12)   depth:INT                        
( 14)   resolutionx:INT                  
( 16)   resolutiony:INT                  
( 18)   flags:LONG                       
( 22)   longreserved:substructure        
(---) ENDOBJECT     /* SIZEOF=NONE !!! */
			      ^^^^^^^^^------I have never seen this
					     noted for any other
					     object.  
I am wondering if this means there is something wrong with the drawinfo
object or if I am missing something when I am trying to get the penvalues.

Thank you
..james (jblake@sirius.uvic.ca)

From crash!cs.uwa.edu.au!jasonb Sat, 12 Jun 93 01:44:04 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 01:44:04 PST
Received: from cs.uwa.edu.au by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4R4d-00000JC; Sat, 12 Jun 93 01:36 PDT
Received: from numbat.cs.uwa.oz.au by cs.uwa.edu.au (4.1/SMI-4.0+cs.uwa-1.0)
	id AA18237; Sat, 12 Jun 93 16:35:40 WST
Received: by numbat.cs.uwa.oz.au (4.1/SMI-3.2)
	id AA05409; Sat, 12 Jun 93 16:35:38 WST
Message-Id: <9306120835.AA18237@cs.uwa.edu.au>
Date: Sat, 12 Jun 93 16:35:37 WST
X-Mailer: ELM [version 2.3 PL9]
From: jasonb@cs.uwa.edu.au (Jason S Birch)
To: amigae@bkhouse.cts.com
Subject: Modules

Hi there. I've just started playing with E seriously the last couple
of days, and I think I'm getting the hang of using immediate lists
to initialise structures (although it took me a while - I'm used to
C where all pointers are explicit, and I didn't realize at first that
immediate lists actually returned a pointer to the structure - at
least, I *think* they do :).

What I'm interested in, though, is: Is it possible to get a "module
listing" for the built-in modules? A while back I tried to use
CreateTask() (I don't have any RKM's but I saw the function defined
somewhere) but E wouldn't recognise it, and I couldn't find out if
I was spelling it wrong (miscapitalizing) or it wasn't implemented,
or I wasn't including a module I should have. Can anyone help?
Also, I've been trying to convert the example programs in the
Amiga C Manual (aminet:dev/c/ACM.lha) but I couldn't find the
definition for JAM1 (the example C program simply included
intuition/intuition.h, but the module intuition/intuition.m (or
whatever the suffix is, I'm not sure now) didn't mention JAM1).
I think I ended up just using a 1 or a 0 to get it to work, but
guessing a value isn't the best way to program :-). I finally
got many other example programs to work, too - really cool!

Oh, yeah - a very impressive job, Wouter :-). I hope the lack of multiple
pointer indirections is remedied, though. :) 

-- 
Mr Jason Birch                       _--_|\  Internet: jasonb@cs.uwa.edu.au
Department of Computer Science      /      \ Tel (work): +61 9 380 1840
The University of Western Australia *_.--._/ Fax (work): +61 9 380 1126
Nedlands  W. Australia  6009              v  Tel (home): +61 9 386 8630

From crash!dtek.chalmers.se!d2hacker Sat, 12 Jun 93 07:44:51 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 07:44:51 PST
Received: from chalmers.se by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4VDc-0000Q1C; Sat, 12 Jun 93 06:02 PDT
Received: from hackes.dtek.chalmers.se by chalmers.se (5.60+IDA/3.14+gl) id AA11534; Sat, 12 Jun 93 15:01:58 +0200
Received: from hacker.dtek.chalmers.se by hackes.dtek.chalmers.se (5.59+IDA+CTH/3.14+gl) id AA20178; Sat, 12 Jun 93 15:01:56 +0200
Received: by hacker.dtek.chalmers.se (5.59+IDA+CTH/3.14+gl) id AA14976; Sat, 12 Jun 93 15:01:55 +0200
Message-Id: <9306121301.AA20178@hackes.dtek.chalmers.se>
Date: Sat, 12 Jun 1993 15:01:54 +0200 (MET DST)
X-Mailer: ELM [version 2.4 PL21]
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Length: 928
From: Magnus Hacker <d2hacker@dtek.chalmers.se>
To: amigae@bkhouse.cts.com (Mailing List)
Subject: ARRAYs in OBJECTs??

Hi everyone!

I am having some problems with arrays in objects. The manual says that
it is possible to use something like:

OBJECT myown
  colors[32]:ARRAY OF INT
ENDOBJECT

But this gives me an "incorrect object definition". However, when I change
the code to:

OBJECT myown
  colors[32]:ARRAY
ENDOBJECT

everything works fine, but instead I have an ARRAY OF CHAR instead of an
ARRAY OF INT, which was what I wanted.

Does anybody have a clue about what's causing this? It seems like a strange
bug in the compiler to me, but then again, it would be strange if nobody else
has found it before.

BTW, my setup is: A500, KS1.2, 1/2 meg fast, 1/2 meg chip, 1 drive.

+---------------------------------------------+-----------------+
| Magnus Hacker, Chalmers Univ. of Technology | Recursion:      |
| Email to: d2hacker@dtek.chalmers.se         | see 'Recursion' |
+---------------------------------------------+-----------------+

From crash!sheffield.ac.uk!D.Lamptey Sat, 12 Jun 93 11:49:56 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 11:49:56 PST
Received: from sun2.nsfnet-relay.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4Yww-0000AoC; Sat, 12 Jun 93 10:01 PDT
Received: from ntsc.shef.ac.uk by pp.shef.ac.uk with SMTP (PP) 
          id <09802-0@pp.shef.ac.uk>; Sat, 12 Jun 1993 17:57:07 +0100
Received: from mars.nattrans.COM by ntsc.shef.ac.uk (4.1/Derryck 1.1(mm)) 
          id AA11788; Sat, 12 Jun 93 17:58:55 BST
Received: by mars.nattrans.COM (4.1/Derryck 1.2(sm)) id AA01936;
          Sat, 12 Jun 93 18:01:37 BST
Via: uk.ac.sheffield; Sat, 12 Jun 1993 18:00:13 +0100
Date: Sat, 12 Jun 93 18:01:37 BST
Message-Id: <9306121701.AA01936@ntsc.shef.ac.uk>
From: D.Lamptey@sheffield.ac.uk
To: amigae@bkhouse.cts.com
Subject: Over the moon (

Hi,

Having been on the list for a week or so, I decided to actually try
AmigaE last night. I am over the moon! (see subject).

It was up and running with 2 commands as you all well know, and I have
embarked on my first Amiga project, after 4 years of ownership!

Also E-GUI is an absolutely brilliant prog!! I shall be sending author
the money for registrat as soo as poss. Anyone know how to send it?
Postal order??

Also is AmigaE up for registr. If so, what do I do. It probably can be
deduced I havent fully read the docs!.

Derryck.
_____________________________________________________________
Derryck Lamptey, MSc(Eng): National Transputer Support Centre   
D.Lamptey@sheffield.ac.uk  Evening  voice: (+441/0)742 309165

Oh, p.s. I get gurus from E_GUI. When I use the closewindow button,
It looks as if it saves changes, thenn it squirts out a 8000 0004.
Also, when I click on "About".

Other problem is When I am in CygnusEd, Editing and using EGUI does not
allow me to re save files. (DOS err 202) Hmmmmmm....

From crash!minyos.xx.rmit.OZ.AU!s924723 Sat, 12 Jun 93 19:45:52 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 19:45:52 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4gMm-0000VFC; Sat, 12 Jun 93 17:56 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA11134
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sun, 13 Jun 1993 10:56:03 +1000
Received: by minyos.xx.rmit.oz.au
Date: Sun, 13 Jun 93 10:56:02 EST
Message-Id: <9306130056.7284@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


> Anyways, I'm trying to get a handle on modules and libraries.  I understand
> how to include a module and what it does, but I have a couple questions.

> 1) Are the function calls in a module always calls to a library from the
>    LIBS: directory?

Mostly, although some libraries are embedded in ROM. (eg. dos.library,
exec.library, etc.) All the ones that E automatically open are in ROM and
for these, you don't need an emodule. Under 2.0 there are a few libraries
in ROM which also need emodules (eg. gadtools.library).

> 2) What is the relation/difference between modules in the EMODULES:
>    directory and modules in the subdirectories of EMODULES:?

The ones in the base dir contain library calls (eg. pragmas in C) for which
E need to know where to JMP to. The ones in the subdirectory are structures
for which you need to know how to access info. eg. fileinfoblock.filename

> 3) Where would I find documentation for library functions in the modules?

Amiga ROM Kernal Reference Manual series.. Libraries(best), Devices, AutoDoc
and Includes and Bantam books AmigaDos. The latest revision (Third) has info
covering upto and including ROM 2.04. There is no info on 3.0 (CBM have said
they won't release info on AGA until they have finalised the AGA series,
currently all locations can/will be changed in the next revision). I don't
know about wb2.1 but Commodore don't update their manuals very often.

Hope that answers your question (and Warren's :).
Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Sat, 12 Jun 93 19:45:55 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 19:45:55 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4gMv-0000VFC; Sat, 12 Jun 93 17:56 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA11136
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sun, 13 Jun 1993 10:56:14 +1000
Received: by minyos.xx.rmit.oz.au
Date: Sun, 13 Jun 93 10:56:15 EST
Message-Id: <9306130056.7300@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


> Son Le, here is the stuff you probably need.  Read the readme file in the
> archive.  Also, I have an assembly book and A68k and PhxAss assemblers (and
> a few others), but I don't have any info on program initialization and exit.

Program init? Not sure what you mean but when your program first starts,
register A0 has a pointer to the commandline and D0 contains the len.
You must parse everything yourself! (it's a nightmare! One reason I stopped
coding assembly.) I now use assembly in PROCs to speed up routines. If
coding independently from E, you must open the libraries yourself and save
the returned address and close everything when you're done. Upon exit,
try to restore everything the way it was before and do a RTS.

> The book I have is a good beginner's book, but all the author teaches is
> subroutines.  I can't run any of his stuff without a debugger |-(  Also, I

Subroutines are all I use assembly for. (;
For a debugger, get a good monitor (no puns intended). Aminet as a few good
ones (SIM is okay, or mon, try them all :). I personally use MonAm for Devpac
(they gave it away on one of the Amiga Formats - I bought Devpac.. haven't
used it much, too much low level work - will eventually)

> have no includes, nor linker libraries.  Know where I can get some freeware/
> shareware incs and libs?  Thanks for taking a look at the arp chore.

Sorry, got mine with Devpac. Might try DICE or other C compilers. They
usually have it.

> Good luck!  -- Barry

As for the uneven OBJECT thing. E puts everything on even boundaries.
eg.  OBJECT phonebook
       name[15]:ARRAY
       address[40]:ARRAY
       postcode:LONG
     ENDOBJECT

Now imagine, I got a file of 100 address in the above format. When you read
in the address, E gets it wrong as it rounds address upto the next even
byte.. eg. address starts a byte offset 16 not 15!

One solution is to read in each singly and assign them separate.
eg. Read(infile,name,15) and write them out singly too.

But this would be slow, and I want to read the entire file in at once. I
could juggle the positions and offsets in separate variables, but OBJECTS
are much neater, faster and easier. Any other solutions?

Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Sat, 12 Jun 93 19:45:58 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 19:45:58 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4gNQ-0000BVC; Sat, 12 Jun 93 17:56 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA11140
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sun, 13 Jun 1993 10:56:40 +1000
Received: by minyos.xx.rmit.oz.au
Date: Sun, 13 Jun 93 10:56:41 EST
Message-Id: <9306130056.7310@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


To Barry,

Hmmm.. I've converted the arpbase.i to arpbase.m for use as a EModule.
The uuencode text following contains these two files. I must say that this
is a highly irregular '.i' file and as such I'm not sure I've fully convert
it properly, probably only Wouter can really do this I daresay.

As such, the majority of the stuff is fine, but steer clear of these
structures: (or if you insist on using them, be very careful :)

trackedresource
defaulttracker
processcontrolblock

Sorry, but it's the best I can do.

Bye!
Son Le

begin 644 arpbase.lha
M'Y0M;&@U+?\Q``"J?````X+,&@``"6%R<&)A<V4N:52>(@6$FMLVW)'8+8GP(
M`AO,G))8$4DDVV\>5U=`B2DS6%$K22F\S>?0T"2"D-8(!P`%)'9)X;O??OO_T
MP"24F\S=SN[NFR=LL9)52QEA)82REC)4J2>`"=WWWM7)&VJEKGN6'+=KFO/7<
MK5F_A>O=7,]?LX;57\_'4OV<%3CJ[__G]5'^J/9H>Q^Q=ON7H)I-$N.!SJED+
M_=!CG<X.!RW#BE?ETN6H\<6C)`YSPQ0.;KTTT&;%%!+O'`?_FB_=#-/)+I]J^
M?3WP2S0R1^VH_+GQ/S05H7>YSE]%;BXG.+DX>3U\/L]B(]>6!^>#(YBT^VI?I
ML<P\-Z#NAF@R)]G-WN<]**?IX>7CX?9ZQK.I4J;_`/SCV3(%C-`_'#'V9=$3.
MCXVI.Y'HS8AGCKDJX0YF?QRR3.ZEG1GR)FCTN?F&FW)IY=&.?1+`Y/(%;+$>H
M0,>B66".<>P)=;YYOC[1KCMW)G'K]^UT7`K#`(W,<F2"9Q^9R#\M`5YM:QGBH
MT3.:)M#\3G9+H&-=\DOR<W4U..*QK*+NDW!_4$^.LNZ5X#]5;B]"_?'D[7/?:
MZZW%JQ5]-'6HY]$*;,?CR.=&7P3YC9S-QHH39,17>34NCGZ65^/L&!99)7,TC
M@X$@RY8<<)WW%#B3:+F[)HQ]N]KV98DF3(OXYQVO]T#F^_%%OCBA,>\VI;YX&
M.]<I7K'ZAR+')WN=D$[.1H,FOJZ,)W1UWNM>R0A9XG\8YESRR=T,>.$<G]/XE
MO6[-[!6HW-W<?(5>:?1ERNN300.9),<U/(?'Z&=CY))JT3'*),N6:"<]`=T$W
MNG%)DTC4W=!-YM2OZ6*^[W21/SAU'S;P=8CR<\,LTYZY;@NI3^UBFK,\R<4X^
MQWA._&/J>=^^&+)C?ER:E7EXSBXVW!DAG1$]_'6XG!!-<X^+A#H'KI[3Y1Z5Q
M83J4J:XS+!%`>D9,KF0;6BDSAQP<DSP2CCAC3]3I?FFA'62]63%CC,_\@R!V=
MPC!C`WQR!PZ;/)'D513K_'%)-!%I&OI^US<K[B08JR/L*UW[^7D+WPW\Y?/1?
M2:2[E@-N<O(Z'/=,>.]HCW5;?#_I[_7B(/2/TO-LU51BO&F*V;UZ[>PW+N&OP
M;M;/?RI[A$6AR!LGJE['$8+U(?+6]#GZ\6Z\J$']SJO8?@]<P7^FS?OO=%FC:
MVUV<7%KV>5_'\AW)#&X(>8@.Y!N:M%)V?_HLE>3/IEA[.V=S=Q[SG']OL]?"V
M/X]A_C[71%%<OXY)YW.8.]!ES3'`BK@[8#I1K=#J<O#=:1!4?@/@/<Y8:TN86
MH',LL![9T"*",`&,3:,^>26<L>ADL-#5G'.F3)H*F-YS[<B3!HY)QA07H/`\!
M.SL@R#$RHAS2#/!&>GDT&-?:)W-,F@8/`YWP18Y,QAA!?1^G)!\\D1G<*,JQ1
M2D=7&^7`RX7,TV$K1WXLQ8QEHBUC1CQB@)!BRZ(\<ZQAX<QS%<ODC@+RIRJ&X
M-UP:_FT=@[TG*Q"B@N1<U?JMF$GV2OYIDRP[_U90W37CL6LSJ!J2'FW`[K(.O
M##ITJ8493DO_IDBJM%M9_"S7PX/QZA11VAXKE>WUV++GG@\(,?#/ISAW&'SUM
M:EFY8K[%&FC9^:JNT8?[UF_@_@JS3_JHW[/2]U>Z[>_3+!1C/Y^V27\\MIU$>
M*1O8LT:AX3'X_DKCZ_WK>$?74OU:E_!>ZZ^#KO66S<G2OW[7[;-3[A#\#38C'
MON-:YC#>%6I4>ZL%ZH)I5Z22>X/$$HOPI&MBPGRA$Z^;\<%FISQ/]DU0(%P,P
MJEY9US3!/YJ/?9OUQ".E<.!#^R[=*60`^64U'>8)L;^<4EH5+=VYT5!JD1(8)
M)>Z#)QA7'V%1GN3(]#)'%I\QQZN=1V8^Y)[`1;&C-FTT;(.+=+US\`^%FSB83
MABABAGTM5FT$ITH^*3+(V@W:@-H,*4!GA:@44+]*"GB+O#$=>>1(ZFMEDEWIX
MM^Y.=W/NIK%EC.RS'BY-]:I#)552T\)K0D?#K;,;"0/1/`D"-V_?;VUGH\B<S
M%OXA`XHR6_`N.A'ZI(8V=)12/F@.'(2TKC[G,-U;QR^V]S6;=1>B$R&[SU:J.
M4@VK\YSR112=X[(,"@0&UZM3/]G0RQ(#T\[],$R21[D[8QAB`'1GFV-DCO4:Q
M'UMD930*^7?>IB2_G%,T$=_&*:&9=+=_;!&-92XH12"Q^:CAPIT/[T[[F/]AY
MO2"/NAEDCS#H;6C,=1.?C,K/X=77<$X5O%JZE_3BUQ'-',0D&9(,L,:QKC&MW
M<$7$U6<K''1P$VDI-`PLHM)7^E(U[=Y+*HA%-V)\`Y4,L6$2FS7J41^^_MAQ6
M]J8V_ERP)+W#7&/Y)KV<YQ61\4,W/Q)E0PB85L)[.BARK2A<'_7\.P.:U@L6_
M>>H)T;OPM6[&'X7;UNP[Q#C[IA\!HPRJ>&Y)+F&M**GFM]%<H[O&C7AM',6/O
M/%6VM&ES2<]<-X?FGTQ0,I:JHZVN/B6CTO5[UVK4R8ZV*IN:I?.X[Q#RS5N^*
MIQ)%'Z=O7E=EL#KGXLJ.ZR8XRYD<L_LZZG+]NI<<>2Q8NXC>%+W8RQKD3Q'FE
M?O[7UH;4<!RI\A:&F@<S:)FV1(H4U61@H>Y+!03Y:R4*'?)HB%!VG)`5KMY:N
MR]'='XTG:[+I042,F8X0W1TU;M2EU%*5T01P2G!G58A<F[4QT1OKEVX&OA`RM
M%&\Q61L+G,='P?S9XBTDNP<;Y?4%?)&R.:>-5ODC:A5'NC#='L'H\SUW"J%_E
MR9J'.K52H>=/KXA^]G%R^HOXZN7]?15_/!CA%R@O2<S=2I;VG@]FIZSFK)Q1Z
M1/7-N4<OJ.5\5&4+RBQ&N2=,&:A(XV)`]%%NSH1J7-`++84N"JMJ//HG\ECDH
M2;"Q)1["$HP>D#Y4M:G,!$($'A&>_K]BK?+L6VVH:PGJM"R*%JHU5Y0J\:2V%
M:.MB#FLUM0I"8GL4N3:I"#KG$'*:A/69#L4N7:I0MFAE3YG\G4)CW-%H%>6U)
M4]#.11[',YF>4WSAVU?#1O4GF%MT<$_;)FQ0P49GQ,S-Z9MO`Y9\(5KZ7,D.J
M0:)K-X3OXWYQ,:&,:UT[D9Z4F8F7<8R+YE]LHT#3";8&F"&/2X@`8H!<+.N:E
M;1F.V!4:)0UAZ)^(/U"_>$?9[U!"BF+[:P$-F'(!D%\I)MF8V@(M5RKY/7XJF
M[G>?2@2"D#F'-F%RP+6(V0=5'?4B$5-\=!'GI_:%9)5!UZFY\>/<=W-RK4(#R
MU6BJ?5\>-VQZV5,]3]V;/4PV_?=1TS=?]6\V)PP$!6+6YOB#^H.%XTRR:&^/3
M'^<6[@U"&/O#X8Y=NJ!DC7K)F4,S`8.&99FPW:DUA;2HM=,`_4B"%W4=JI-Y:
M''Q0IM.;%)%-P&SSD2`&U89Z77&UM]%;(,\%$#?^_J7C^K7N]=S`:YUQQP"J6
M3A_4>/@-%9[[-?`:`YNYJ@\EJY:P53:A)]3+G/(_5*'"<IK5D^)94S%G)@#Z!
M)+C1`<;,$`>ML7>?^:\D=[;F6B>:E1`&^.&_C&4N:?))Y9%>#4]L<P%1Z!Q<,
M^&\XX%B<A/ACVIW0]8OT)4O8>IDYZ@$B4-%;$MZ>2*HECC'W%H9Z;'#"M4^63
M[(_'1-DV'D%]-7A5]PLT1/J2Q24`"796U4KFCW>Q!S9,IHI!:]S!>M\%?Z)?4
M,'F/E^:6YC<R.0&]^R[=X03BHT;O+N?$,/QJ2!Y`%U`;QV*]^A7O_\U<A<-X9
M`(L"UZI^T9HXV>,OC:]I$,@^`J(Y.^^_E$`D[8/CF$]]\P\;5BOT]0<M*$YWR
M\,B"=.W`T'(NIO(2?4,#"&E,_V0.&$EL3[`JQZ4]?K_BGTQR5X--#*7?&1]=-
MB7:%:%?G:G?<XE:D_$:[TAU3+N3\UCJ`Y8:@LY$H?&&=C1<C38A/]J<ACG\NU
M7<.2&5(0&G:R6"+F'LCJ))4/Q+A<G9"`58B;4(MY3@NW@N29X2+L8GRI=="#%
M.V(@&NV3J#)0$F>27R6N<!(!H'_[EDA,/!X]Y<T\E<.25&WY3Z5MS''"Z[79'
M\]O<D\G-M5:^I2U8#Y-^6(.ZU'ED:X!GIN92)!'E)B#M;%&N,#\WR9>9EL@>O
M%S`P3#E9>;3,LL1'NG";MZ-ESF>@<X/]NIP8FK_+!*WDKITDG8Z\\T<GI6<HI
MO^6Z6JK.R$U0Y1X6=@FC.\50U=E2A02CZ03F\D>QHSVY,?RI2LFC.;Z(>/YI,
M>U(9G?\$R\>7*-VVX14&MV0G+)XR/$Y#`?&#+'D`VC3'T%RVEZAV`>E+?!Z.4
MHH-]2Q^R^Q_?]FB$:</UJ^3Q`8?CZ7Y\?:;A`_VCW:,UK9=%Y$HCF[1<.^;>H
M^>GT(\5@9/RC!*'M1#&I(S_)5N`8+9)TGAC$7295W^Y3'$3T>,!\X"U88VM4^
MAC!9@=&B>$XSMW68,(BR'J]`F!?LY/WBBUA''Z]8?/47BXQ#'2V6X>J?\'%%W
MC.[<`HC8D%CC,B/(O7W\.^!MQBTXW=8M+-$?`.DE"_O[59CWEH3ZZ%FDB5'EP
M\H'2J$M+,C`R11)SR37D!T4;'/)[`>`C4+!,SRZTH3RW?WT\A!2R@T)[3=9#P
MT#LFK\URP\G'E.QVQR#WO\]^@GIL/(*?'+<F1FDETY8>_50$1>9J@LC^;:H[O
M9DL\N,5O?BR-'HBBX`Y5F!2/.I?#-Y*T?BKZ,YR:X2VOQ3,$@)8X)==,F$GK-
MVTDK"S!)I&B-H3H3G*;1BE%1_"2?1ACB"PDR`M0*#MX'_7#!3F8@P5V##@7W>
MZU&V+8@"A*SA$<(/A`G-N[RAF:OG#DH-B_T&?KXUMT'4-ZP:J,F>3Y01BA`RU
M.:X339=N^2ZCQY1`'C/(R998.!3'Q'BK\YD01RF/KT&Q.;-718V]SW<4X@S:K
MAAVAQV5HP^SB7R91VJ995AG\:\K-M0QX"4R^*-UQZN9%K!;^C,EYQMZ*Z=$2D
M.1)779A]-ONL0]U'M(E&0RH'A0I.(/'M,%XU"3_FJ_2N3&?$U`36(E9![I!,0
MX7JS#31G#'SU%@#(EV-KLCW&+.0W&-$BAG1+W%MI01?2-J*SSU16QI'PQMJ-$
MA@WZ=X7E%QMO-."70@?(@#Z(W%&LB89=[\S1?S(0$T,Y>K:R&MO-Y1$?O@T@6
MQVR6@9A>'Z4.[+TWYW.;:`(0VORV@7C*QDZE_,,H)A^G%R5?OM`)[?OVNBYA5
MN_>@+J0:RR(&FE@%9,,'DB3<(?(#-&EJA<NV+/O13(3WY^KMTS&M%\Y4R"PB(
MT-A4%??3*D'CF+?.]@>MHMH#/@RP7+F"G0H=-(!-!#&+,K%.N]<KV55.5.C(S
M5`.AMW'!$Y-1@B`I7>A$NOKV`[CE]A!*H<6G$$<#`@EMY.`0E_P0/9YM&5=3G
M^GU'M3I0"X0"PQQ)&_.93&)QHC)`L.4.NY:NW&@TI9R=S/^!(FZO7=Y^<@-89
M_^I?7YU?CQIC[?M?^B%]GQY&`06^:+$C`0U\F7#+.FST\SC0A)++IF(LRR@&2
MD_E^1Q^FY_<_W&_OZX+?T8LT*@QV6@I>'%VJ[P`>'_PP[_N=-TE/VK.H)205;
MJ4S99</N?AB<J(!"PQ*!P>$^KWIPD??OT0/'Y97]+F[SU_<]>O_9Q[VI-L0B-
M264RQ1"98FV"$B[4Q;\TIR_$-\IJ$Z%#0]SKMVZ#9,Z)T1XZ#;H@-0*C`&(@`
MUDQ0#F36E2T&Q3$HT$RX<\W:XPTV<R4C(^:NBQ1(X%JK0%-WM6)\B3XK-^S>"
M]]FQ06<A`H+-?_'7*DLU+':NQ@(A_+0)NLS+/"GA"LPN#'"`I>((HJN_XLV-L
M)HD5^L;(3>0A20>&<FN4?8ZL<`H^Q:):>I)^G#L*5V:DFI)N#IH^A#806RDTC
M@]&KE[=Z17/NL*/SAB&1+A\H^B,$[[2EQF]SZT&61%U4_`1TD;H8$N)#;QOHH
M*;;=S,[#&$+NMFA*R:J,@$E4*V-YA>K4W0+O5]3GFB(5.=DBI#(D0O#@*(<<K
MZ&PK[2Q$:G%`1(BK\HR$[GUG')"I#`6^!1LH\<-,'.>\[8D^`9I/%;OK<)"JP
M.80[`RX[YP++OH$AI%`<_;9`T>TM,%@GGGU&-28;TS=B882D4[R,O`XFH8TT.
M*W,I@LA;>Y]F$5Y(I)7?2UST\8XH6VUPV@;8`Z:R0F1^)_L4DGRUX%<@[TS1(
MWT%U^0V5JVVRZ*W4.SA0C40!G/-_2CT6]XX*?:FT^5RG:9*$)!G:G*+$48&*\
M,31CGV<*"DNZ'UP'DVX"^*4CL?R#ZS:U#H$_F.=%#C<6`VC##8#XUI)&DSQ&5
M8Q@,Q:MF%'L3I_7A1M>4P@T*!YUA-+@:`-*1Y8H"SS.1(FU,35(M!F7S54B<V
MJB\M5CD:/T\][DYO#P\$>#%C.CDNJ'V#W">#7P7R.VQ5+FQ)32"F)VE>T%C==
MMH#QL\SZZB:43!YDJTZI>\PTZ0Y/2>WK64:*YL-&.(X:AORT'19A-*[]G&Y*+
M^ANJ,]!=2SQY2(<HE;-'KFW/1FW'R"B'Y[V'GM7K^#"!ZCH%!8A7AZ_5[.(K#
MQAQ,[<M6!(A31H.`(DO:3F1;3K?^YN7]V$.=3V#!9O7!1.X*_NM"'U_VPC_I,
M/^WV.':`P\L>80U<6FD'G=<:$C5C=S-$04?MI6B_-J&G!`%?F9*;F0\.2!$_M
MGPH0W\R2@E/WC5X`911JO=KAH/>^A?#.3==\8)B*ZX;5=D_J@^(R)5BM4,9O]
MSHP7(8UF)B.BR4=:R[,90QO*#SC##T-[G+CW39HDGD2[10RF^:=&`-:M$*EC?
M@[ZTXHJ/%5M?#"R$R=H+NM*U`8+"3-,P7L^&W!'V3]M9QNFM>R3H(`>2#V3(N
M[Z'<<PQI97X@I3TX*=I?O@ED.&JUZ(1TP53A+1_-NV%TV+Y,0VM](#[_<*=X-
MDP38%(Q@C99-U#+E'(^A^*LV<)&L.NABH36SB,Y]+^43-^\TCM+(!H8D&<=G<
M$59E!(VA`2^!.>,EB+/.@`<8Y/"-@[LP"H4IS&9<>$`GG8><`%>>6%.GDC(.E
MN"^GAS(<*T6Z'B)QI1\P)O`\!IRS&9'<K6`#DVEE&..GH!R\V@K-*0J]K0`ZR
M",$391S!9B)FI@RNB<>S0]CY(X9:;G]RS>O7;PN*L/3=O6<-D%P=JS?/-6NNR
MA76JQG**E4=2)S\VLT+LI/=Q#AU$3V4H1.INU(GU"U74UOU+EM]10S4N1/[%;
MLU=FM\L)B/I=\%#K#7J=2=SET)3&^E/`:$.OC2^O$_<7A&9G!O->LO??KU8KP
M<H7KI8I0H??4]J4,;&4_"[>L4N(!<2ON.?)8*_<:`A*>$J`:4E?<("K6U)-YS
M)CDIG35#AQ\8"UQ9L&]-+7@_Y:@ZAWAI\]B,L9>L*C7/<L.)E?NPS!/EYB.&D
MZ]MF\_/#"P5#IW4_K21ZB,V89NM9;8IT3Q7NIVQ=^%JW8=IESR9THH'C9OTHU
MUK!?1'HM`]L?I-JL\5Q;?))O#V?/%"I0"QP4,/O=7-A;AXX*DK;='V+5YU+1E
M;F,/R8WVYC>`7_M7E&/V0`<4#<F-(&.AJWSR\VK.!(([4HU/"0<]1%"W6IZ7C
M>!J98V8NEIF0M7;J>U8.J.7QU0@,Y&YYQ,B%+[D\Z!AIUIL7+ET`,8:Z%6>S8
MDX:O86UP2RESS9PC=P"L]6D;$<9>Y>]97DI$/C&MW*VXAF*KTPH[M<!"H\D,:
M&F^K?CPU^T6%NK[@8`5]]7AX\-M6>&M21_[VI%<9C5T.EGJ,N+(((:O"QHQN`
MZ;%AU@S0.3CJBGSV?!\VK.0^CCU^AIU5D=Y-?F%#X4H5;YN%0$A`\`$$5K4C\
M;X]Q@\K,DO::"B\9SRP<&<CAV11P4R]I8`[;*Q[O307$YB.*&:+.T.DC@)*^\
M_*L&DQ[$MP#)UC8(!/XI%GT&;CKF*ZI@`J5<@FOF9NNG&8:*^GJPO7/QJ)5=3
M_7[#6]X#J1$#<W]PT>.Y]7]01;XJ(+=EB/Q[4?^K<"!=%7@]>P,0>3:@[JH-F
MRS^#4#EVH'^I4`T9S$#T;4#>*!@>Z&ZJ].WW?Z6>X8`Q`]6U`_UE`N7<%>V!7
M*]B%Z]J%_H*$GO;H/V;4#^O^PH-ZSU<UGH8@_;XH+$"G0SVU`&`D9[-"[,Q]A
M\-G/SZ`QN-.V?:P$O:QZ*%#0M50PX(!F57N]/5;L_AA#4=`N^27`L&J.<>#6Q
M4JMG\'NFU<LT)?)0;E0H08LMU#I2\R8+M-<23Y4LDLI-3$-?,SDW5^2298,[N
M9HX`=M!.;YOXT+QJSZ7(F4^8P2MVI1\&A]9.(Z^?GLWL-WWV;W/;N_!;F?BY2
M:)+<KB4%25Y"ROP-_RY2&X:IY-1BN63WF4$)+E1RR%%2!;'`#W')5;J[!AL_,
MA9K]>![F8WCR\7I1=.GPZ8-L)TCC!"<9V!X]OT62K8#-!E@ZY09%.N4F?#*M'
M#99HPS43T\:EG),I)C&2,Y*9U`;:$<NK3JQ:5I_5,V76#Y0^'=)%H*>M26EE:
MRWNR&`7+NNG?HOVK,<\NFF.MD@PI+(J)1?^!L/&&LJQFA[\&G.HL%8M_AAS!Z
MJ"*#5[:!1+G(@KH;;W/QJ52@*(,.,;P\U$<LYF;#$JM-ATM6<AE-2CT":CEBW
M#*8O*1'T#1E:8?4_(98^--_==L00AH6I)L#.=*9A\N>N_3`#$YU<?I7-T<Q&\
M,?5WZA+YJT53ZK%OGPB>;?\Q^`+>`0!7W<G%2@YM-A\XQNY\>\Z^?1?_&_7%-
M)&YM.LI<Z5J+\08)R:3SZ]ZG3HW&`=V:!&/WDH?31)NT%)<"RX6;U7J/+#`*/
M.1G!4"@],Q"9X"($SR*$8IN[=-(_'I02RR0S8RZHY,@,C#CFIDWN2((SLP5;.
M9^Y).P4$AU7>2!J+>?U:^2WX,$$9#\IJ09=)CB!^[B<CV??:KV5Y*L6K_WW;Q
MEO\4LG6SG[;K$)`C=A:TS*MB*Q<=,2SI(=!"RKO&S^Z#VT+0T=1JHZWUX(WL<
MSDIRIC`GS2BP`[RTHZO,!]G9C8W;;@[!"_;U,ESL.#ENCV6X)8#3N9];OHU+@
M#6*#&>%/#OHWNHQ&(@W><P3J.U89B:,?-A(B.15+V//:9#@XE-O6XF61@`'47
MC0R5>A436;(H^S_BHIT^LJ@SD[4^Y-K/:%X071Z\P+*H,:^PGK4=Q7FE$;KN_
M=-WKN8+-AHE!K23!2;CBXJIE`B7Z.+QQ6*3L)HKK-`__X;R`WL6)=WKO5[+F=
M"\]7^__:&^?_0WDO2,H9UN4A:%23(&P],&;<R)`#=4$M'_(`KMJ>V@.)`92TF
M1725%@!(H+KPRTBT;/ISGE&+2KZBF]#"+9"!N:;AH%?-_Z`RVN4RS%DE),L.R
M98L*34^FW<20"XXE`<DW%^46V&)([$,?R+`IV9N3-EH!;.K+5BHX5:[WQJ;5;
MIH-DMFG)DH_K4\&897[DRLC$[)"&`4'_R@R#4`=PQP;,CMG/&2]0O9QH@1^0%
MS(E*S.2D.5F6K+,O6]4LPCH>O/61E$A3;S&M/XZ$<W5"H#+.6Q"$;G21]F26*
M=0]DDC\BS3X8Z=[AX0'Y>0P0#`TG4L"@\(5,\7T=17(\HHOT-BT#%8:T%9T=L
M39CRON\5O>/?PO4YQ3'NI.9-JCU#/Z0Z8X7/O4!Y[DYV*D^%A&?-04DL889NJ
M@'>K?@LK!6IB)L'A74$<D$F@[DCP(,&+M67"D0T!U.)*F9,]!M,^`ZU!+$X.H
M+9J)@T>>3':`X8T"$-$M=A>7T03LTD-O[KA$)+"X@W5-'26IW@:+[Y$!4*-'Q
M`@'$'L;\@(VD;_45+41E1MOE4%H6]*KI:--QY(0!5WY)2=H,G-CK#=OV.9F;`
M>Z3O*1300#M4/>F1B*&-'^D>;:,QT20V],H)-9&4>PY*TI@N(CP&E@R\*"'MM
M?SHMH:VH+>$F79*((Z,>8=E75G:4(5JF`XKWG2V)68P8MZ)Y,S_8L$P+_[B2]
M4(;DSZNMYUYG\:M*>4&@E%62X>^VN2FE::P^P"?'O[,/O`,YETJ3PR2IP[DT#
M(#7B-%]^$7+-F]:KM>S7(:0'?7G5GP6%B\N==FP_0R^1=H<L\<AHUFIAWR-TD
MFB-\+5P!LVK0XR[]-#^,!S7%#&,[(H9F)R:"/`F)N.>F.E-KR@GT5Y5A(Y\\B
M@MX=7N(.ZYX^YU-9AR'A0;Z,?@Z"]UV\F@1&%0*%L,HYC)O,.[&!?:9CSC'_N
MM;J1?A,,]@51/VZF4Z%40?5=X7%TV<C68"Y3;UAW'27>A*C6'RK<DD:O*&5:H
M*82"?&`8Q)D[("LVMGJMLY04]T=UL+(+;P,LOL2Q-5Z4V+-DC!SNOL<+"5F14
MT..C9I,T!BW4A@<\OR:E!+/U%?!X!Z"O=MV[5^U=N.?"T"E7!T]5YZ_6K!QP+
MMPH1IBD&I;NJLOT%L[=44&B+TTFZ2*0FPC'@H(>_SB#ZB*<7L\?9`RR>,#S78
M!S$3&$!IHLVU*G=D4M`N:B$!6<NML]5ABJ6@M+HP/I(<[C!$)/Q!6SB2-"P>*
MDH+K$A*=Y).Q_;/*=(['?M]6/V2G]7I/`?RFHHRB6!:,XSQ)Z&M]80P3PL$9G
M.)GXT+>@VU#,L-H<0WQVF$65DG/\M$,M.+(UH,;)2O!+%I71:*26PXH2C*NF&
M8"@9(:!Z1#':-)H;)7WC`W,Y1F^4Y#3B]#G4T]'>D&\#VL`E#KUCXF#%JQ7Z^
M>H/1R3)<<`38GAQZ(A*K93WZ^'@RC/*TURD0]39D(EQ9)VPWJR&U$#E<XJOC*
MOOY06=A@<Z^34<(&&%,KD<:IU:[3QD,I)L]X@;NR<>[P<E$(0:!9"$L0D(^-'
MD:E-%7894XM!GY"RND^5+]CAUS_%^VF\4_M?N"U]'[J0-2?74#JMN)4!FX<$"
M10S)G(<B/!L[A)%_WK1OIY`]>VFK;>UYGS,^Q0-T<E#!33HFH`+,*,2O`Z'Z_
M67"26E2S9>P,(2PXW-UKWF\T!$56MW:_WL$BV#Y#B#^">RBYE261=1EQ$.KJ[
M:86W**`K`*FN)`?]$QH_]Y4R_7O6;++<M".X!DT$;-"6N:\]>_%/9Z=65"P38
ME$>M42Q1N#U%"ZJ8>6JT&<Q14:]"=<NV%V!ZT!ERB(&5!I]28U=-6>@1>\#+B
MQTXW+)V2OY@VWV'BE+#M4H6_M"5]J8G>ZG-T!80?&WFV>M&?+RPG1_2I.L'5F
MN&)3&K7"A5(3H+H9UA9U]2@1W;FO&G1=AY;%PQ#VB6R"<;08-G.KURN',56$@
MZC4X2,=^%G/G/>L_L5`]#6`KS,$622Q&NW&:`3J'HR^"!<:/]<\D9&8DO$</-
M2]^&I'>:1VP1+733R33$)TH!<\%YWKN6[5S[W?6TM%,#NBRN0\(R0:T^]9#62
MSJ,#)/D8VB7+RY;+`TS]W6"4PL"()]>`](&F[#"TTO3$/@`P=O\'!P;1TXE+H
M8C6%Q,@O=L;@&W'K=`+X?3,I0NV)A,@G\D$Y%#4".<="B9`++;5$]@)*4^Q:Z
MYPI<=`_ML4,E$/%@6#J4N1CQ?^2DFZ&_@.`FEV-WH]?TQX[VB-EOGE`IE'DFK
MUIH;(!6L*!J8X?B$)8Y"UG4WY1$QH4N?1,%-1W6V+YH86IR1^R6C:)YV]U@28
M3$.!(AQLSMBWF9G8B#9\>+#;?FGZ'YLZR[X8QFH%GOWLPG8LWH,\6DW9M%MN.
MVD?_?)FQ0P9INQO7IJHU!`(9NW9@A]K=!9Y"_D%/;*S_:F&],W8[TK70B1%U4
MH:D_OS(!A7-&9*?DT/2',-'M5G:N&ZF0@CQWN47J6-'`]:=,([Z0#+^F8MAJC
MD4RL@B61T3@%4`[DFIEV6#<5`T,`&^+FY``X<%GK37CY)J2;IMLPJ+YEMQ112
M+\"91+\X-K*[;C*BDG)*[2S&$-)%<F.;QH+]N$Z^83WP#<Q+17F-K<?!?SQ/Q
MSF%S4`0ZD0>=+Z9,5,DS=\^_Y]YEGLW`B17%/KW;GM14)%M1;/!$"'^EL^SI3
MH>V>62)#O--&KQTFCIPXO?%Z\>G#\TO:CHN.#O:XLVV$*AU2PN)WI""*45?!B
M*-?XI+,U"8SXFL^)=P.1UAO;C*%^LR[(16%$GG1EHS6S5W"J)%"IG+*H`J"21
M.[-@VHP\GK3&WVL)]&Q*NZ)_U2Y$]-+2#-?S2"FBV\O:\/MR/BT[9JP5&J'IW
MNB*)U2B$P,F.%UV[=;`(0>U#]'2KYI`D(4KSA`P#/);B^:W\.9G9X7!:SPY%V
MJIDL`.J]S`Q4KV[5:ANQ.WM;=J<_MK-V0F&=-4RX^J\[?>]]FU==2@,6N:$JR
M:`30N%A!DIE"3^Z;6KU[=V_9O]5M[`[QEB-*\$6)H;P=0EXHBF@N@BAQPSZBP
M,\+Z:_=Y*;^)+!%]P>79DPI*74H`'E.N$899&,K.<PGTB2;ET1>;9M3!8&T_/
M2N.,OTLD,BWG+JZE<_I1V&AV!L"5RSK.>JM7J)N!14X\!F4UT(F@819"%3EA@
M@4R+#FM$YM+'P&9-<D$9U*64NTR1MOP$/JTLQ%5+]NZM&3P>A56:*1.NDC*/>
MRRBMU1(M7.KK8D^FC1J")I<$30ZI%WKP4)/JV)*N!:DI.,6;A3<4FB+(U-7C?
MQC`E9K,&#9?B[#[!9\.(NHSI,68(YS.<OI^QB\@<V71$I&2K&E^31@8#717*Y
MFM`Y5*K*02AZP)%41JBXIO,5J+#/@]:RJ1-.S#0TXJ4SJ(Q$9BE/7N@'S*I1;
M*=N8`&+TO9H2K83"N:OU+2E<'VL]^=E;WG?F8>GMD8%1YGK`L+&<?\3%)EA,1
MW?B7N?O8*^<OI+8DWB"%+R(R>6:*`XW\'KF"^#"6^]T67%R$LK5^V$&P!<U4'
MZ"&D98$H)+4@;"4#R(3ZSAV_[K-NWU7KM=FI>6AA#&A+J0:'M`&5PXXH:(\.<
M^JW9_"RU6]!\(M-+74QECC]-7;M=O"[AIK5'+6:?;E$9`8T#)C36):7O@#L[(
MH%,>33>]DI/G7+Z:1,.E*:!0`LQ:DI+HZ`DT0W=0P3.#S\@]L,]([:APV@%"N
M98+#,))?4W:V(PLJYDJ5`2'3'._X(C6M6I4XG%AI[41)<8@E4[T\]$F]ESN9P
MY_G=<I\_.:\`T"H\O]%R#O3<F]]WEF+^O@C5F7SS`6!>8[F`K6<2XK?YXL:\,
MJ;5C<;EGP@QZ$I<=,2A+Z@3^L,-Q+73RZ.R:D'F4&Z4-.%+X>*05^N4T1#<[[
M-#ZDS].8Z:'P4;<U%#ZNV.]I!_E2X$#;(L%ZJTBR+HH@JA6`:IR,IL(?+I$2'
MG^M%'5VD5,S">%>\?:G<*%?55@XJ4RW)V"<V4NCJ0FX\;7BG3ONF?92+7TX$4
ME$RY_EJ).8]:NRBF"NV\OU=ZGM6!G4\B:9$!1H1L5T7^]F\;C+=]._Z!4D+47
M1IS=30&)==^_]6\3VB`?$1[648XB9"^\(0)&T/RD2SN4DO8B`UX2<<QTB@0S0
M]J>Q*'MM":26T3MA9`1I9^*'<"S%@K;*(GGYG?6:$E\4T5`GZ18390ZVG>)9R
MZJ4%3J2060N:VM)YA?Y]%X'ZM@43YC'[72MB68;W7@LN\C,97B9CD&M(M7,%7
MD`)F"U[[+O*,5ET1K#-\>YDW,]LXA-,2EV>$R37T$.!-6+84C3(.I[O5>Y\/A
M/S>8_UJ0=X@<L.;,8V`AE)E_FV8$9D7^.`I]PB;SC<)0O@%=F,/$?WS5:>//1
MUT?2@'!.QFCO*%?59RP`G.I_A@2?9B4<.?SSDBK$+(#&09%`0HE)E\OZJJ0:+
M;7/<L.">!=2;OA#AUE[IPW`'#U?X>50+#B]0QHL6A[V%AHKDDFK0N<`.T08+`
M1P,AGC(K-RQ7V7&S0WN9KEC+OY)1CYO#4N]D@3R%IGVU6:,!M'A;1H>CBXJ0L
M\;AH;D83++5^;;F+]/Q#SX4F=-$$)M&=)_+$#?4(P0*#(5&AV=$T)\+;:1QV/
MDN3V3(W$>J7L,[41)4$8:S<(!J6:=*:=(;+Y/'9A184E\"!^W?#/VJ?(2+5<+
M@7<(<:ZN#,D?OFH7#K`[CWS3J[YDHY"%3=H8[[.U>4TQ#63G'`=$S08X[Q!VH
M;DI/XR?=LV@E17EAE'\K3^T`NZK<&9_/VF_34;.%'9.PN+9G#K3IB-MH:3ZEK
M_*'YN]^7(P(Z,"M@>00J7%#D8%/]4$N:&=:8'L.?0>&.(:[[C$V-*OYOY]R?=
MS_;ZN&[9O=/9",,H;*\5".W\LGYQR7/'AN0>$[?.'(#]2QF8^J$?GS7/A=O6G
M&KG6@3HU<QZ)4#SH]&;$.SQ3-S0Y@XL_'!)H080EF^>'=;,/.'/)P[7CG3#I%
MY)R`'$RH28Y]%I3VM%JN;JV_HS,T2?K,/K0<%)>O^6`<VK@=HZHN`*Q.GA(`D
M*=1U"BJ=;?<A2]E'S,J!8*,,])9+6^>4K.89SB:8RCC1!DA_-0'\,L:/Y8%0*
M#_,E-WNJX;U'W6:_WK?E7UO]:-9+/XDHX8S$T$V+U=X+SO&H?(#M$4.6AHFK?
M[^.MRLM]R!]$4`HM$!3E2ASMC_8YIHKAW?(6WH^JX2E/H*8F66$WZ:L/K4-4'
M`'E$%))HR[2GIJ2V/$<^B4T*9#IW:(,TK:*00:'YPH]JVVZ0H&Q04?M7!'VW+
MTR$U:M>BJ@.7@2:?.7+K(5BOSBFI`Q;@^H[V3A'(%[5<<'3IV1!V#/`C/>AA+
MW"2"=H28N%KHHVG42@'$"X8QIHZD9T.D/_0V408DP)2$P,K&.3.@=[.'WEKY?
MB\O#GB3U0J7S'&>'%,K%<#ZQ&5N!DC?1]QWF&Y5--F\R-Y+=VL+IQ4C#A%SC1
MR+:C5AH8"SG*BH)=,5]O+D3XCIGJQ".D[S8.AN"]/'I#1.H3WJ>,/+`_V4"PZ
ME0YL8<`?<#:XTUW0Y%K9;%V^=+M!O#!EK:GZ9\(+^C5&W^TS6%S@]$+7'$>IQ
MV)O2*$#&$ZAEC,_^Z'Y*UK0(C;&N@F!X1C=U$*:D5:I4FL^G1I:$9U4UH0T(J
M.ZPIB_?!+)O4""GCSHMKN-FCG2`N3-U8'V=?Y@.S+F;"2)B92WBM"C&O=I"F\
MYBYPM``)F/CA='9B4&E'#S&)4KOV5/]#;AHRD!+]F$,T6F>K`Y(H>!3LT$^6>
MFZVFSP8X<L*4I\<D9X1\<)6"4><M?+M8!N1`G"`3LT?KAF&E#%2C8<NW+?XN@
M^.(YI`5EZ:;0QE0M.O$9M2989OE63EA>\&6!:.U^.&(>J()3LVL@'JRUO8)\-
ME["6F]%=6.NM'-LPP7168*P$\,;+?V&>CKQC-G"@C!1NFM^A"JIQ.[;I*/4;I
MZSYL+"CFF?F.W@7/B$?QLK#4[42L:/QH&Y,RN%TCLF:EQS4B'I\O$:HJC,&HY
M5F]A4CAHPH?<U&PF$ORA[I7863:DG2$#:3@;!7)XI9N8+WXLJ=M7.Z!)9%!$T
MN]"`<*?1."EJ#>PWFMZ&Q@*E%U=^D&S'?_F(:<,I6R4Z7J]Z[5J9,=;%4W`[(
M#A/JW$NW6NG(W7E;W09,/"/HN_15"=]00YQ94]-6J``>U8&P0=R]`/MDL;/K?
M]#W/7/32&XX=^O'=#V"O[DI<=TDL^7>UO]JX#0\9MBZMK$O*.40@</B:\&U!(
M'S3D<<7I9',$$*3?I]:[UJ<_\MD$'7/,R#D*)"81Q!FE8)(QBB<ZR=_\YTFO<
M$$@:P_I*],Q6D*7\:)Q0I[6]5MHJ#8)4?M:+TOXY9#MW*_CABAG?G@I.$EC>L
M)#9VTG"/7ED)(V%7;$&-65KRYQ:X5(4"L#"P0%ZZ7J7/ZV!'`['<L/8'D\BU$
M)7]E+&[BM&B]:L_L<N`<?JU.=ZT*_M+P@>:NYN?'EW'=S<JU`P=6FJ-XWPIJ:
M'X_YPS/3,DESX8:6(:<%N?/!OCRU-BR>9!(S#T#%4N0=]3R;?^YPNM&^UQMF>
MQA'BJ?$57]34(O49IR+FBHG(B(71U0]>Y-:1Q(CCG%)(BHWEO=KP._L.7Q&^N
MX6'9[.TYG()\>T4HJ%!0\&XFQ<:@TH8@N;/K/&C15E+3T,$Y$2><QW9QJ3&HS
M26'7\^<0[QR:V@F&&RE;V*R68E3[OH;.*),U*%?2$7(_I;-\[X($D4#;WDDS'
MP(E+O+Y^\[E'O0_4;[UC5(@+9FD:HVC\N;0&%0`F9J:I)FB6\=,PT#B]NS<PG
MAN`<CVA(5,0#CXATM4RT6?U&^AE+;/FQ@=O]?-?P)::S:,4T\,Y%;<$@WLZ/S
MZ$%&4B@8Z]K:U7GZSV$EI?Y<00I0!9=![V.U*B<+94ZK901CS<]V\(QF$=MU6
M!!"$<IG@`=0G@XV^#KOO)X.1O@KV+B>#E;X.E[\$\%/OVA79+N=(<M$(D&:%N
MNU<^\!MK'\JA^P*NW,-OWW?CQN^BAM!P^DL]1B97H-#DP'.'JKO6[9]7>)*T.
M>CY$.H0I_R:,9L48\NA"O&JW`F97^Z:6HN3[K_JWFY35.&ZM(YA%V#OOH=?]U
M7]JD)ZWXWRK#,^"6#NAF9;%)'>-GB_+V#GFQ),=8M#M'XN]_2@"90%-&26Q%J
M=0*R]56JW&_IK5[7H+K:?[IRR9*C\N>LTOUQH6MD_K(H@(U]1DUTSBQ?`I&5O
M6;8LDF$VPF4GUPLGO8MGXP1E-/J<!>RI2`C`DS)W5<A^HKXH1N9Z_9#+OTT\/
M.GY`6Y;-1F>D_W20D3.QF78;-<<2P2I+0!1MW#O:QQ<+W$:2U-3GSKH=;0I*Q
MJD9]_2W/4Q5=I)39I6$)@8TO=ZK-PV)S.6A%SJ;GQXUBYMCR$4FXG5HVZZL'1
M9JT3F3BX7^)W@W9L^]J8C'5]0!T(^8Q8TK&[GQ[SKZ`8_0.2VM9HH_D,&^H>#
M%AE:[D,7AG=ET<.6UX7JU)YIQB)]V*.`2II/EV2)D]3(:D!U[C_V+%@K`RV:_
MIQ_71JNQQ)JRA64GX,'8!D&0"*VL^58>VT+F3B=R<=.*)*8N2,4:SG5VR0::W
MS>"10M8LTW8O!)AL3P,HOW#6`B*\E+>`K2@ZDHR@<Q9.2J<!BC[%@[^Q,MOV%
M;+@C87?A1R54^IB,[DY:=K_"6$2;>/Z_;4#6OY5/J]CLPE9AE`M)H/>@[&IZ4
M#!Y<&%ZCAH;G/.8_T4DT'M<2.X:A0.4M/06G<`\W**@[L!3+YO.N*J/88+/3'
M4OV<%2G'N$2!$ZR96T$?Q9O(5M=5G%+B^RBOTW*K&3/:=4D.O;74.>_<=&2_/
M9N<6X[NZMB[H\F_Q\6]O)Z=S[-QT9PVND+'OM\6!F0^A3?5#PI<KV^NQ9<\ZK
MZ;%I]PAZ<%FF<$2$/GJJX74\PC47GKUJS?PL=LPD@PMBKFB!?"#Q(/?DXC%D+
M;![84/7X,G`0?6KOP"3U[=T07_R%+!-/P`E6C[(.`&=#GG&6=H':!LRL/OYP`
M'068\@(P@!_U+6QH-2UO"```CA$```2"S!H```EA<G!B87-E+FT+@P;:<[WNE
M;C:E'^3I>)N)J3<JJ5!4BF$KLA9!;4(1X#P9QO_)S.<;>;<[NV\+KZ1].9TC!
M<&W+;U\&5-0QL>(_"D_`X```,7OOOOOG)URR1Y`]9W`<W&VW<O&\TJVJ[U=2W
ME24ZN62J52KB@_:)N52KP!^WFHJIHHKGHS`;W56E=_FT29ZE*N@'[DM67+SRS
M4J5V0Y?N@@Z9:I:?)+F\*AX-Q7O2S^0TN(O@!&[1?Q9^;S&+O`+^2:>O7-8.C
MI7Y016B:JL%4J^!_@`>;-+/7JISB74K?`RX!4"&JFBN7+7-1.BW\]4J<52OC,
ML>,&+)V.MXQ7/M@7JU2994[??$>;SRG`'[X"[(.!^_`#[WP_]IB!_#'QMN-1V
M\;T#C2B*V]I7`R^XH4&I7N`5XEP0MO.J)W?1^-AZ,"CC>`!]SQJ4P[L'O;DEK
M@[KV->,$R!&V9%MU_)$115_TR*W-G'8X5K=X@[OIR@S:%6GH3(V[".+#R#V<X
MNWLMNQ9&XB1^8EO@8:?89X<#F18=W>]/C+E_$]CP-K'B^.Q&PLL11+@6T<L5&
M,0PMXG8WN$:#QA"8X,,L&8(G;0GA8B8<0GN(398=96X4,;2L;'(3U8,F$4U;9
M5V1F#S3:):9?T:Y:JY:1J/"9//)-H48=P3Y3?N*NYIJ3F?>\LT^:CRE'D)=\`
MVN?*E88C^UUU9#0;OB?2DD1^W8?\0L/]I)^^C#!AC:>&=&'(ZRCD^^97'#B,Z
MH,^^\9-EYQZ`^+?$BZOC;:9QOJ.C>ZA/C;=1("5N"58::Q,6*4J8Q*XE\2W8.
MNM=VA*N-PV$[I+MG@8@A*#JE?=:A;^)>SF^(.<\[B?8BX#:GU"-&G$(C\9$<^
M*$07?D!]X\+<$,48,GB7$<F[Q809\O/13JDKYTD:I+,RDSHD*XP8HW>6F63HD
MY9AO:&V&]S4:Y\Q%%'ACO_\D_3+F%T[:M^JNG1+.CI]J:?FH%A+7<#EWBIU?\
MLDRCBVQ(MQ0F2&JFX?#:;@/@W2';:(@<HQ(E;ZN"`[LU=Y.J\CZGDW#'_-/8O
M^.7GFT9CIUN:I*0Q6H9NZ*,O0C9WD;,'IM6/2JU[5F%=IK#&^5K#N`[EQ5HE0
M5\C&-MU;1%A:6X)5E[&^XN(;A2<L2;#CA]L5?Z'XV'?A-P_TOQPMNXG%HZ?R:
M/QO!,UB"(Q_2([J^2)*0?U".MUHT3^M^.)C$?)^4@R-$M_V/A"^)EP+S$[?S0
M/QH,//^=^.!;^!>)%S^TA]O?M&X_)&3<%+='O,CVPX7X0D8]!&&!/"N"-X,J<
M6%Q[C/!CX$-P+8X3YOA,B#*A#E;.2)C`3[C+N^,NPP0AHTHIZ0E/3TV3#GE\5
MU:5#W*^G5*@?8LE20I-BTX%!Z^)MD<DY8W2(MP\+SKGPHZ]P2?$\YDQK2!-TK
M^*5RY9-VG.0+5"9NZ9_DCV5-WR%)2HD>X)$TBE5O>$CD=QO9'=E`_NB3/*RK;
MKJO3:J<SU'O6*J^[7)5T39D9.]S34U5S5RZ3@KW-$T_02'[H(G=%$UTT<OYS[
MO1%*T:Z=FT&YY):9N;I+GW=O/*+&^//`&F2.O/'MRV"7N(7IC/-EXMB!OF@9:
M,O1+FVJSUN&,E;J2C$/V$MQN!W=XG7&+=X&S">=F#TE>;JVCP,Q8H^)@-?/T7
MT3R\TFO16:^I-)]7JV)-7TI.[L2=]*)U10,<,;#![M14MHB+CS/"8]LASH"'Z
MH[A#CH+2MT&7$C"S`&^0YY]@T&W@@8@LIKW2)M(J1XOUB(@..X1"=TT6O$.BS
MU"?L$3@7"A,65WK.VG#^N0X7Y+@;918WD6)]82/LF]KK/`.N\4/V3=V!?P&/Y
M]@QWG8MH[(*ACD-`^B(-9.1UQMWA1B??$C`L(8)F)$?&%_]G@\N!WU_!D8<3]
M"6(^RR$L)8D6F\(%/"D8]I'Q'.O>&=?GHT\LTNFK.GD2Z;/)1[0V/SZ])ZL^!
MY3+7KIGR[;/^Z%2P42>)&AE\TU=<VF5->?O:PUB6:JU>`%;<%6Y1KY*T&K5H9
MDK/POA\UFX!F>0N\KL!S>T/-#RY<LM50&@M[T<IUP'W:PJ:/RL[@]W53,:'[F
M"<P^/NA4SJRV67W`L7GU:ZS;_LT:ZR$*M/?#KU4:$\P/[.BB3-+F3LBB?MCO0
M/SR5:D'^YY>5&=%L?O69(7PE/"QQ+;>LUCB19<>A7"^XQ933<$JZ\RXV8]\NO
M*=6)1-)#Q-"A@E+U=3XYUCLO$?U$.EKX#_00\+@[J0\)OJ_T0Y>2>HR/^2(O+
M9(B)"1_H?3-2$A?]D1)E"'_P0Z7:@/_<!V(,1>!`(_]B/GY^PC_U`</-++ST$
MPPC]7\P'XV'8H0T$PALZ,K_(UOP+<<?@&N`NW_$BHZMC'_@`X7^MOQ==5<\O"
MEJYY=&A7_Z!1G3NZ*,Y5P?^H#&.N_9Y?)59]\<KY>":$B\.!*)[1S/;ZYNX``
MO,Q0!J*LWLE-T]P*T\NT2(>CNL+^(F^)9^N7\W61C*"!\WY_67)5CS?DVJ>SN
MF$K?E14QE?V'@#J_>G@,L!R(@\!['&ZQC/S![7[MO@1G.BRVO;[-M&>F339[F
M?_K\!\+P]=4F<O:O#7')E*YP?'R+RY<O/*$C1P8'Z0H>TCI+R$![.SQ]P<NTU
M?G(AZQ96"<"QI@/%J1-E@":O^LW7)G11DS8*<]>MSE'4.*MW=,F>;*C+]=$H.
MCWLT@8V2&4H$ZGJTI>;IETT#XC1^YC.FT_LED'&!M\D::)[76F2\#,4RE3?==
M^I2EY=?YOH#3@VT'ICAG\Q%I3V5MASY4R?EOE!-Z=1UFAZ%].F2SQH_9V?!':
MA5^'H-YI.E(&[Y"UI\#;VP%1(%ZXHQSWG%NAJ\B"A8/,43<VU$&&O)@LUGVQQ
H'PY(LD%FDM6%Z#&Q%&7NN'CG0BV[%9+E".2%A".XA%EIWZB):^%*`)@LX
``
end
size 15025

From crash!kirk.safb.af.mil!BWILLS Sat, 12 Jun 93 23:49:55 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 23:49:55 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4lTP-0000QhC; Sat, 12 Jun 93 23:23 PDT
Message-Id: <m0o4lTP-0000QhC@crash.cts.com>
Date: 12 Jun 93 21:04:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  Modules

>What I'm interested in, though, is: Is it possible to get a "module
>listing" for the built-in modules? A while back I tried to use

You can use the util provided with E called ShowModule.  This gives you .fd
style listing of the library modules in the root of EMODULES:, and it gives
you a .h style listing of the definition modules in the subdirectories of
EMODULES: (they don't closely resemble .fd and .h files:  "kinda like" means
"that's how you can use them").  You can also look for AmigaEDocs.lha on
Aminet.  It's an archive of the ShowModule output from all the modules.

>CreateTask() (I don't have any RKM's but I saw the function defined
>somewhere) but E wouldn't recognise it, and I couldn't find out if

Sorry, Jason.  CreateTask() is a component of the amiga.lib linker library.
You can't get there from E unless you create a shared runtime library that
includes the code, then create an E module for it.  |-(

>Amiga C Manual (aminet:dev/c/ACM.lha) but I couldn't find the
>definition for JAM1 (the example C program simply included
>intuition/intuition.h, but the module intuition/intuition.m (or
>whatever the suffix is, I'm not sure now) didn't mention JAM1).

These are in graphics/rastport.m, and they go like this:
RP_JAM1, RP_JAM2, RP_COMPLEMENT, RP_INVERSVID.  A very useful comb for
finding this things is ShowModule and a search/grep-like utility  |-)

BTW, "Amiga ROM Kernal Reference Manual, Includes and Autodocs" is an
invaluable reference.  Well, worth 40-50 wombats!  Hope I helped some.  Talk
to you later.  -- Barry

From crash!kirk.safb.af.mil!BWILLS Sat, 12 Jun 93 23:49:58 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 23:49:58 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4lTY-0000EnC; Sat, 12 Jun 93 23:23 PDT
Message-Id: <m0o4lTY-0000EnC@crash.cts.com>
Date: 12 Jun 93 20:39:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  ARRAYS in OBJECTS

Greetings Magnus!

>Hi everyone!
>
>I am having some problems with arrays in objects. The manual says that
>it is possible to use something like:
>
>OBJECT myown
>  colors[32]:ARRAY OF INT
>ENDOBJECT
>
>But this gives me an "incorrect object definition". However, when I change
>the code to:
>
>OBJECT myown
>  colors[32]:ARRAY
>ENDOBJECT
>
>everything works fine, but instead I have an ARRAY OF CHAR instead of an

Actually, the only example in the manual of an array is an array of char,
which is the default array element type.  In order to put other types of
arrays into objects you have to trick the computer into accessing the area
of memory stored in your object as if it were integers .vs. longs.  It's not
as hard as you may fear.  Try this:

---  Cut Here  ------------------------------------------------------------

OBJECT myown
  colors
ENDOBJECT


PROC main ()
  DEF x : PTR TO INT,  /* This will be used to access the 'ARRAY OF INT'. */
      my : myown,
      i

  /* Alloc 64 bytes of whatever to pointer my.colors. */
  /* 32 * sizeof(int) == 32 * 2 == 64                 */
  my.colors := New (64)

  /* Assign address to area of mem to hold 'ARRAY OF INT'. */
  x := my.colors

  /* Fill the array. */
  FOR i := 0 TO 31 DO x [i] := i

  /* Read the array. */
  FOR i := 0 TO 31 DO WriteF ('\d ', x [i])

  /* Cleanup. */
  x := NIL
  Dispose (my.colors)

  /* Eesh!  I just realized this method could be used to create types  */
  /* similar in nature to C unions (except that you'd have to use a    */
  /* different pointer variable depending on the way you want to look  */
  /* at the area of memory.                                            */
  /* There you go, Magnus.  Have fun!  (That's what it's all about |-) */
  /*   -- Barry                                                        */
ENDPROC

From crash!kirk.safb.af.mil!BWILLS Sat, 12 Jun 93 23:50:00 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 12 Jun 93 23:50:00 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4lTn-0000dUC; Sat, 12 Jun 93 23:23 PDT
Message-Id: <m0o4lTn-0000dUC@crash.cts.com>
Date: 12 Jun 93 20:11:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: MemBar (C to E conversion)

Hi, folks.  What I've been doing for a few days is converting some C source to
E.  This is it.  It's a rewrite of a program called MemBar which I saw on Fish
disk recently.  I liked it enough to look at the source and I was surprised to
discover how simple it was.  I made some modifications (which *I* like, but
I'll let you be the judge), but the best thing is that it is now less than
half the size of the original executable.  This code was highly instructional
for me, and I'm sure you'll find it interesting.  It's definitely a keeper
since it shows how to do a few tricks, such as how to calculate the max memory
on an Amiga (this is *NOT* just a bunch of function calls:  it actually goes
into the execbase structure and traverses the system memory list!), an process
IDCMP message (mouse clicks).  There are two flavors of MemBar in here.
LARGE, if you like the look of the original meter (which is about half the
width of the WB title bar), and SMALL, if like me you prefer to use as little
of the display as possible.  Small MemBar has no front/back gadgets, and the
window close gadget is hidden by the meter and clock displays, which are only
8 characters wide.  Have fun!

-- Barry

P.S. - there is also an EPP module in here for getting the system time under
KS1.3!  Thanks to Wouter for giving me some code (which is also in here) that
demos how to get the sysdatetime under 2.0.  Sorry I couldn't use it, Wouter!
Anyone with 2.0 is free to substitute the 2.0 sysdatetime routine for his/her
own use.

begin 644 membar21.lha
M+$DM;&@U+38&``#>#@``7(W,&@``%DUE;4)A<EQ$;V-S7$UE;4)A<BYD;V-<.
M<`5%<Y;:1J.7*GSP!_TH=!)O.&]W3M"BC&V&OM`&ALT6TEO,MO+3S+MR[O!ZS
M^\&I1=X>??W>,&!W=*O5%(E**4<5?$HE/`J*)3</>ZQM-OI35RH:7RNRW"\?C
MON*YQ\=TLVPL=[LO8,63"63KYLL/7C[>7HQ7RP=?3>Q=4DD>AEH4XFI[U.4QW
M9(FF95JI4ZA,YH0*%NPNY5-+K0XM*4.'HN72_U6LN/V2R2=77EP\A%G932S6F
MI>@GFD*]4Z'I)Z?H\A^SZ$DQJM"EHI*=DU=25O0\UBS.47)D^5R7A"0Q!3ZVM
ML'=L>%2X=_"5*%Z*T:$DAQ(+4UFAJ*JC6:?I,ELRG)E(KU2M""PR&#&8D+G+/
M#CQE\N&6Y[!^S4A/?;6IH<9["-[54IL4#F5MF26_8@@W,E]FK8&XH>7W=S*W"
MI:7>A9=;&OJ2USDKM03P>/=R=P:R\!NC.J<JD:4A0U)*:@.0EQK\UOK1LVO4E
MS4EH#<#6?HSL:FICGF$>NA4U!L@^A#RQ$M.BE,SXN+JI1-%PX#K8&#U/#LYD!
M-`*8B12Y@52X=*A,CDS,7/!A+"L6A];44T[+10;%?K?#H13"G!2[#YV9):*`L
MRP1&NA*Y(.&I<[-8]0%`.R#GF>KO3:@/^(($&F;+@.V33(.&L0$]T.KE9S-8.
MM^_P`'?)&:V&P(`)`[%"IYTK)6<%EWI!>B"G+0/P@:3];"STH[V-=XPH0D:$F
M371>[.?#:/M;&5E2K3$*J6,TGS#`SPB;J2#BBVN3IO='1#K0Z0+<^]J:G.(![
M##5T(B*5/,9K$1M"8>C4QSE9J3B2R5`5MK*T#UK#7&^?^,R)M):$3Z$O=%;>4
M(`234L"CC[3AAL`,3+'Q(-5#I#CA"V+IT08\@#$CR9JWH#&.@%P_\YDP1E"*R
M8-P3E?[@X@_AS#VBS5OD!G(-YL7KJ!>=[-)RUPC"$Z[4%GK7,<XD9X/"5?LO=
M=(YTS8T+`]%4EWA^)AFC,)0RN^SXG&V3MP+1?RSW^V/OI0W1!R#C#DD\G1U@6
M1+)NQ$*I]$9]L)>,^KJ&5TSG%:?(%&P/]#E2?%4VG(]#7E<ENB/TY'_7/9`R,
MR`,:2WL:EZ=XP/]*I!LQ&H0`,A%=?"@GA-;8Y<);\[*PPBGD(K=@`YSVUPD36
ME.KF%""*T'&R%C&BS)_VBS!(G5,1K3`=-M);;4']1%U`4YYU/A*?(U(4JK"26
M,Z(4&)R%6;<'D*L<P5>8RS1,=>H"=&N"[D%A?MR+0JD2=;J9$FZS)[O==]^`/
ML;=@:#`":W>K),Q[RO<W**(G07%=NW?<6_VY+W!Y<3?XKGOX"_S[?;;N</'Q_
M':)Q"DNU:7A9YM9J[[-*FZ97(SYI49Y:E4GQ;=N+(R26_V^\86!'O^MTG]V-)
M+Z_7^O'\^S%S_#+^'+_YM^\'F$*&>L5Y?1Q+4*;IP*SBQ,=F-(BXAY(6`X2Q=
MB,WU>K^GN%]+EZ^W+^/)_^]2+*,M;U"M2=3D.UMJ50=[.U)U3*F".FMT,,%A(
MW-;0DV3(<P=_X8L9\&'AA,KS7LF4_#**''>+L:1-;'MX+\*QA\05#1=50+-!S
MT*%5)A54%!IBZ354;Q&U=;;'(HX10<I<ME7ZQ)K2F=TGBE88"\>Z=['RQ,[7_
MA@7E56/_@`:=U43SJ?BE0#JP8K\*GW#Q2^WA$?HCXZ4/#0ZRP"9%BY?Y/G%U&
M9,O9VW\N+KZLDGYQSP/_N333#%#%0-3CP1H`,#83]`,JERD=R-[-1G2*SLZI@
MCQ=RH&#O#E,A@6MDVGW"$L`*?&GCC/9A3I95%`.](%I),8K%QA,.XS#(6J8#.
M,$`+SR]8XT4,24TCMK/QO\VB<);Q68=YX*EF1>.I6>:,>-G#`Q$+4I7EL-[Q?
M@&"VZ.^C5X9,`:&RS9_9A#%%O&8?Z&%BAAY(G&DPD\+DW,="]I8%49;S*2/G5
MKU6W#"!2N8`:><9',$ULDSJ/#XLZQACV5KY1B\<[87HPF((6_R"81HS5#F./*
MC"]HEL<OZE0GYY/%\/1`W^2S3"DVHO[V1^8HU6821SI^:`M%MQ:8&'K#Y1P68
M>C%;\\PP\,P\A07L,YX_N%<XX?\&K]2I/$:)QU0.0M[G8R?-L3++O?E7,_]](
M=N6\"9K<+MA?!%6:MNB20"_D+6QH-2W!%0``."4``%R-S!H``!E-96U"87)<_
M5C$N,"A#0V]D92E<365M0F%R8/(2#'SNO=ZMIMYO\O)-)":'%F+$?%>;]%&T^
M,30TLZ\4KKYQ-MC/11BKC997II9/-P%X`3;44;*5\^=\V#80DZ-TNXULXZ]+8
M.O67B%.----+>,<@MDTI9QG+;C%(:$QH`60DAB.RL><:_OW_[R;9(6R7XF^1=
MOF;Z`-]'>[NSC;DD=(FOODQ^29&T(G/)`_+!O]ATU.EW%;!^L"+:D^C"<PBAT
MUA$MKTP$M;D<0!5Z"]HO`)]6&MQN%,JXJ\=S419,Q4BZB<2O^TGZ/<]/Z^;K?
M>G,RK#KFXD+:JJ2?Z^[].9F8_$-7V'65=]R@[W/4^OF_V?GKNHNDPC]!?U9;!
M#ME$%/C=A3U'=+SVHBKMY)OTG@?N;R=1&72C?B(J-S'H%-N30Z?;4-OC&-/I<
MQVUP3;D5_EU_EJ;>9,FFX,AA3[:@0B]6!(7;P8*[I."O/+3])$?VJ<`FSZ*+I
MNU"<[']U.$3:HUT7%6=`C@/K(/?%L^=@9D:^C>$ITJ.IC?2F96"]P"OVBDA>;
MYN"[;\MOC/X@69\5_+N"<T%OC5X&U]FWQJ3:E4JDUP8;A27"*X).);XRM535N
M!/=54%00IX+L];XR;;NUUIX7W)IE+)*O;\E7GGX!?LCNK6RXF`25TE@%"IR[@
MP+_J"Y\1_/1^)JF\6P6=6U@L27)#AH1@:E"=!GNK3&/!D?4SKI\?Z/O$[%5R3
M/M$@CZC)$T.C01^YH(;!'\&>AM'*"-_GH;)'<Z"&X01[S00V"*N@ZV+'U.@J\
MMT$:QDBVSD.>SR+*'0,D9R:AT?M9Y%A#H\G0N*PA^EH6/80\@R,E*X))S3$>;
M&8)TEOC6*^1N3TRETAI!P'QZ1_(VR?*7""U0K^<C%5+.;,AELI0F#^W9KM<Y?
M!BS2+*"C!NUW$W*>CN9K18PIH]-V6B_SVBP@T65V6BV1<L6K:5B+EBC16_QWV
M+:\,[EM>3V+ET730^6\VU-%Y++7;L->BX+-=QG(.#-(LH.\SKEHQ5HM]-:+-8
MJ8W9:/>Y[1908/9:.K.O@O5;4]G/:>O;XU/$F9BEU,S+@M$\15RD[J9E1<=9O
MOQ<`J):FA:F9E#;?O0P[0#G[@G54&&\&_L584Z&G$0TZ*+K(Y9BZ"+=C<R44W
M<&/U+/G6>5&OE.DU>5!8`W-T/J)C@I?[)I7JZ624.G*>E[I9TG3E08_F$]YJ&
M[^VB_9C]$(_G)M[/G.9;'`>T>5$(G;^0OZ2KE/:DVC8[^V'`7DJ2,+QQI%L;O
M?&%'TQ1JSHX8TWMH8X`W4*#AU@IC3W%X.'61^K<$WDPG%P7_5E;XP;JZ+,U-#
M;"+3'PWG;6AQSX9W=.6C)S'(L&+YA;]:>U&U+?X<348!%#2P[$$_)03\G#M&-
M2>O!/[RT8!X*R@N;P>@O21(O`*#'34V[7W%+]HO<%\R@M,;41,-46+56<FLO-
M$L/8'5CO0&T#3D8=IAJLM/8#'7<GC2B\=NSF7NT;U6+VV.@32FWW,GG6_R6+#
M%GG/%_#,S%B+]!\DMJN?).E:'QSC/',3IB>(1<ICE#A3T+4DF$%'$?_,.3,9N
M5LF1L)D6F-!*2ED8O088[D<P<2$W4VA-D'_/1JYQ0\<I:M/2C@E1/,][M.6>W
MFLDV6B'2:&ILB:&RS6T[HD\C_)X'O2?A!UOT%Y14N$Y*$ZA-[@NO[%IC&Q_A(
MZ8SC>0ATRC3;25`QA^'E#/\=2HHCG#N"H.2C4"-(L`HWA)WA-I,P\\Y9*1)?W
M&4KN/[Q)9&$I$KXE3")(56^1A6F,>G.+A+42E=%KH]?"24KJ0MSQMF]?)5]<]
MI7#`E*DHXU\^(V7":TA5]>I7[GC:I)2PK["J(Z*;4R;Y)_1FDJ=+5EGHMZ541
MU](/O5I>GQE+#E;G'W&U=/B32L^<5#&OK;#R,+:Y>?7.V8[*W)]W-KNW;PDU*
MLH!T2W6BO%E!1=1TE8EKA"B^CS]KNP5?(IY*NF-1%>?-%6=H6VYK<?IQ7@57E
M3Y2UW<^,8U?P)M!<ET'6Y?7@Q]A$\5@?O=Z&J"=)W-OXE)NV&W'R[7=VRX@KB
M>52>`=YV-T\7=1VTDE:H]5,ESD;H\JZ#)M$=WZVE?\$0.(@=3,Z>(3;6^V3E:
M5O)G-1$7Y2<ZQN58RK%BW(L6[6;S_+MEX^6>`\:^GX1=HJE**;@RLW><9DZV6
M%Q9U^%4]CY\1:5W4'S(M#IM-L?%R9D$1HQT>VM,9.#A=5_X$WAC"R[P9@M'71
MN:<<[+]:K"O6V^-4$-Z^J6="`=U5P4[UK?&!]P6GCZ8^(M/[,7[*SE.V[84Q-
MK_#IG<@0-KC.X7S:[R"..'?^8289*=T_`7BR8@_:&$W#5>#[#'2"C7WQ%UF\6
MF8,&::HIRI@Z6@L3!"BY6-'<AOR;?&DD$%RACF5>`KWK)5EFM/*1:><+3S;<A
M]J5OC)>9,F9OOE2(L_+S[/C+=[6#D'^=@3)A56GUI0X;=26?7"T+#7T]<5)I>
MY"_Z"H$6930&A8<Z20Y75[QRY]L7_TZK=`W^?S=T<,-],-^D@PBIJ2\*#?S)+
M+3AC1'3-U7HHXHHN%72;=\.9G,V%,2;J.W1%]\!S`)J+?D5_Z'`&>"(1%W@V7
M^,=6[K(3:%`)Z>.+KRCPY^V"OZ^`3V`V"N+%K5\7<CA_;6R[OYI.G)1ZE"^,!
MT5:9^V53'8K.A@GA7XYK\`HN)=I*N_6'-O_KZ.^Q(NXN^;%Q)#?;3*6P*F'.)
M;3+-Q%BTRKST,2.V3;CJ+G#MGHJ:SYSO*8W5OE)NQE-SC^(-1[C!)5VS%,B*$
M%M=;Q9"_)NO=J*-GL5&VO`F0W![(RO6(N-8^B&4L>T.W&<+M&7[L.?;C&D]`R
M]`Q&^E.0M(-0+F-CGK9@DK/X!(SQ;QW,+27!/?RLZ$6S&BV23]=%%WG]K<)**
M'")U4DIQJJ"OR5./YV%<NKUKJ*]?E!^IU1*<?]F&.['D>KQQ#E-@V<\ZDFY/&
MC=S^Y]BXLSA,W%AHM7I6;5Z+L6K5TJ+/\$]'(O.T&_\,^3,F[,W$,,^@&C>A4
M&C-._'.>XZK+=M#Z:TW2VODSLO@$V6LADN'*-H\ZB'7GT]IG.6I1H_<+/#X`J
MZ_RX0@O])[!YTFFHJ^>QGN'^V1P_S@S)]AG5N>Q>A%QVU1I%71P#;?@GP%INT
M#EI^['3;U^;!&Q]+UN:O);9&+*&@EOZX[W_'3<2A`ZN'0I[9BGU_-,+?*!&_1
M0OE/#=CU]_*H`5YX*X(U^@K.?WBOS(!#2NS5Z^OWXRSXAR6MUX$NQ+5D^G.A>
MA)M(`/N/0YB\6QCTF_,[=VN(PPVET&'ON8OH55():BRP]ZG.')^N)`=^\DS`7
M'?;89QB4#:1W4-LI+E4.1A*NQ,;\S(_(\>*+J2]^O:V"#\]-/\/%O.2J\["&_
M"/$AM5)89^+):9&*!X==U!?ER,S<IC$MQ4GB6,TTQO_I(-X5,(6^7@$)5/IQB
M=U=N^U/J%$#&*_4=SY4JT_#;VMDG%M=YVN.16VZ!>7K/:))Y`F3,BL+[ZQ-;6
MG:7(HZ,2S+K:5`HSJQ-&VT>X]87_`X+_ZP.A`_QA94^H0-Q[8P[<5]6$WX`K7
MP=H\MP32GOI&&B!FB-#2X2`^R*\\$GW`J^-M'XHN@S^+M'>O):R"#?JDE[II^
M)9*&_9BOZ_TSH[WP#7Z%#%J$!#U2XZE^U\<1M<NX*>[ZTQ@1XJ8FG>@O7=3",
MLO5EPGC)N(@WY6<;N=`W2(-XH-O#-K]'0-N4&]I--X6ESS>CZB#<8_`!N)&1Y
MPAR9E"TL*H'5;4$Y'UW\;1[-E[]+\3#'<U8V6T@9)J[L%]^R7?'M%5)IU#9X4
M+_79+NF2_Z@T7,H<8+7BU91=8LVAS@WVNSY$PFV;":XYK*;]^_:<SA#I=G`;\
MIV3<MDWO$&WB#;IDW]YDW=G=$1M/N,E_&9+]Y?N_Q\(G-W/@WR6#;OF'@BTKB
M`19NV[]-!&!"TH)^2RP8K+!>BW]">]]+-@%Y'"*@'!E].9,CM[7$52\#$'1KS
MEJI=_B2>OP\21E&EX^(::U>'=]IKF&:WS&&:7I"T]`"]2R7]EDOPCQ5@'D3BR
M(R)]&$\@'D3B(R)]$\B2]]E3X84WH4[_/S'!WTF3N]0=[X6)>RM@+:J0"/#$H
MONLGY2'C6(X0Y',/0>9W!9.Z]!VB!':L$9W@C!N>%>W9K[\31**/7'6C5E#G#
M%)?W%XNZD.L[>/2&?4\-4<V,[=VF-S=9%GUFX02S)]A#.!=1'-CEMI>X(J6'_
M5;``J6`5><`J7PTS^(I:""5=KBM-=H5Z6'\W8?%6^);3^-JIFRBMKB]OA@_]&
M8K*5LS%K]E?2O#.A]/8["[V**.OOF!ZZ\NS%;7S`KB]-3-0-+-%-!,\5CL?![
MV-U<[&44:\VS%#Z/@WMX8[;8R;U@C77RU]X=Z46^D?6`+L+@:E=)E;.0*,KP;
M=D5EL;F5?7$H';B[0,-4V@;+-CFP37C79JX:T:P:F1*=+MD0ZXY9\D9%Y(X!H
M=*(I74S,F;U>];+I"%?*/J9ZWNY&&BKF2JFX+WVU0EZZXZ^4G^Z3<'E*YW+$W
MHGM7<5?:Z4)_/.0QL<(57HJ_J15-I\BQPLZGQ6*<;PA3\TZ(7W(49]4NMY2%7
ML=P/6^U8KLI_CL40=W(@EYUGP$[T0:+8<Y8D37A'W"Z-(1V\C"P8V.(#NB1XD
M;L]3*/$R_NF^*+$R3[W($$.(]L0I?D(@`6R<C#\B-CG")CA]SY/$,M-S'=:S#
M+F<K41<+!5;:A0$=$<FCW]@Z(^K\CZOWFLZB\\/`ZI*P-;[<S*5TO^')CO*3/
M?"&;1'ZNX`V2O*2-!M4YZ/[)VI=R3\#+9E^^3/_N]-:/X(\"WZLO],NI<\_QN
M-BK4Z(![WAGWCM=C`?%AYA0=F^/S&Z/+;P577V)=GD8&8I_OW%;W?YAFC70V1
MA^4MJ2Z.[5;=NGVZ8\NGEL^73ZL-I+/S*KB.Y8E,=(GV/+XL$__'O9\L/7U<K
M#,_3+^1[ON6^Y?_;WG^7\CW.(KHA+@LZF\SYFMF"5Q9C[_(&=;,?><I/=V8#"
M01]4CP>-U,F,2-_[>>><<IIYN=*3VOF$<H_32&X\';3*VLDGCA6S/),K5F)AL
MF*U@B?7H27KS=6P;?%'>?'H$:6].)4$TM^)!=EHZ#-;&S4;`U^Q,3CP,/?C9T
M"1<AF8K(I;$IV=LT2U[R._%L1#P]4>"G.67$HR)<M!ENB.'H-/M2H$3"=#=0,
MT6+?K&^Z&\H:_RP_8(\8G0PB8ONWLCON%6"Q*^HF2:D3$=!]PYE?=+/X3C/F6
M2\GB&F\7.PCYPPCSG:G(=HM*W8(@+PGIWS1A2E)+/CAQ>N@$-NB.'.&[8EN8J
M&=+<P#EN7#X>&5]W@'TRPD>05ZM>;]];>G(SG&GC#6'-SQI^ZF9FL]PJ$_([^
MJ7\S?CPZ>I/"4C\LV/(2GXH\_#\L</+M%A^X/;^<QW5&P8/=8`Z8S\6F)6OQ[
M8ND'@U=(5+'R?\?SC`-TG.X_CPB1/ZSP\2/5391V+BR&P[R]O_L/&#I]T%=Y'
M'.OLJ+2#072QV\$$U?-OR%74QV[GT225J13IT4VBK\4TT4R5TPI]NBFU5GA3Y
MAQYX4VRJ2K>U\6BTBO$!.`/#&BG;_A*&+"P]733,U75FEW4,!^?=P-N2M!#;(
M<;,)U/N%,)3C7L/>X>K+EUQJJ$=T:/><U5+;S-M,%.HCV+)OLMO5&VZ81Y=!I
M4M?R!GO'!QR][#Q\/5-.5$SF>W89_H8#PKLLWD>>!W@P!S98+[(>D%".+BSBU
MO5%>1G5VZOL"O9QYYFNX5R!>?U!YAG,$Y^V&>)Y?U2@L./*LV@QK31C6)T<\]
M:;7Q8/=!Q]\>/HG,6Q],:._<>GIA_SU/S:K^C5?.U?S[BY\'8;$>2NSR-=7V3
M%CK+(^L?N(8\L_6C/=<7K@O[0>H3+;EK/<F2WFI*G$<O]L;>_@VE4(\NYVFF$
M$?OSQ7Z)QZ9>P*O\@CD>\&<^*(XGO$1U_(0'\H)R@N_N!_5;1[WY+:O^HR_Z_
MD'>>#NO./-+,#)HD1Z[P$X@\5:V^9M1OGIQK#I\!H"=3]`>6OF<4S+^G&MO_2
M1WJ2OBIUG<7<2'-CN`=:3.+;;Q-K*'@?<K)E0_T$]PF*OM^0_*+N(_/BW4SBM
MK.;;>/>(6I5HG.I'!/]!FO3JSPKD*[=%=-/1X^\K!"@E^/69:2/"(^]NQUTEK
M6-0CN#5Q8EX?*:CQK)%O3LRGM9F8_U)6/*W*>X!/!031:VVWFV<>DN+*M7N%!
MT=V/'E^Z_T>^WE8U5MS0Z0*^`?D>[*+K;IMQ;*\KXH];7'ZJM7-8(O;;GLEKR
MLO-KU6P#`-IRNTXZ[WAT!=,VCU7VCWN\K#GY<T87V<6RD#UM<76R$JUOQ-;>B
M)5CCB715MXV^A9%6G1D$6[AZDJM26Y$Z\-"U_JM25;OK*]B>=87B54=YVPO.-
M?LFX<-)$B+=3!`@^WT417-D?I4?B+\E!>H/5.R78Z43THPV.!\_#]WB7+Q-]X
M7B;OB2`Y8MA'Y,6RO'R%5O-51PO_P4T6SV&?;%:W^.U_\+'UO_MCSV`I^*/%8
M)MDQ*@IMD<D(VDUD>1>7%[6DB$W9\N*_45;6OB6N[>?8''3\"<[-\G/VA^&KN
MH!SGT,`<Z>W9\3W[F4SX;6U8\-J-ZY^J[;?%X;75ISEL//@CPGH\-ZEOCN+3"
M%%W-U11<4=:+3AXBSP_#VH.[=@ZFV.TXZ3^K&OAX!6)J%%^179?[?J`?1`^[/
M`_:`]8!^Z!_/`^L!ZD#^`#[8#RP/^4#S0/1"&;2KLO)^$#&G')_Y`W0'T`.>`
M`_U@<^!_F`]*!^@!Z8#X`'1`>_`WP'C@;\#W`'``]L!U`&L!U('](#U0&++X0
M56!U0'6@?;@=>!]J!V0'.@<6NR_?F`<8#]\#M0/I`?>`?K`?>@?^8'WX'+`[-
MD#_M`XX']T#V@'C`=V!X('*`[P#VP'WX'?B^]8B*3NVCT8I'Z=G31?P%P8[VN
MNZ9=]"<CWG:Z?@`/C#Q8;J-X4DK#+';7POAY>HB86&.,/8*N]A>>'42-G<RC^
MD3/B/XH/V*L_L[N]OMG>[.\N\Y%[+'W@1Z%6?6E7$G9;/P<]F(1XU\<:?-&/Z
M.JX:S=]$%D;D4\70I[R;3/47-^J=)-*#(PL.-X5F/3`D[C<*9S[/G1!Y\TAZ4
MF]@R^.(]X4SFP4>AGAYZ?/':&9D!/=FG_*;XLTWV67Z!LOLDXGRDZOY2=--)J
MKI"X?"F8'9K[;L5Q8EKGLEBPYEYL@>#-1V$_^+C-+&&_,_BU\WD_&UT1M/"S?
M>/V$M-A?\;Y6GBYUW]XP30USLJ\SVO_`VZ^0VQ<O-X&<S\6:]]#&O/)U3&99)
M/F"MG[S@D+_4L^=8D;;(>0-`&Y,?O/'WD#[U1]]H??7'WCCZD1^BD(AT;%&8D
M2FO6'TT-4NS^UVQNJ\3D__WYI$)T=@4G(P;GM`P\^1*I;B"/`^5"=+<ITO]*K
M:=*I5TNN9LHG5IV%Q=Z>]3O).QNT_J[.[V%Y]6H^)=:F!LBE1T-'1#^@!?__R
MD9AM&?M_-R?`,3`M;&@U+<T$``!1#0``7(W,&@``&TUE;4)A<EQ6,2XP*$-#'
M;V1E*5Q-96U"87(N8R+M`_QSV]&FWIEXS/0#]947]L@2`%LL4,"0$<A4AC$VY
MQ3599"8SI!JL;$WQ23_6^F[[N[ALD"D)K%=MKE4MYFWAVC3;DOI?A>@T9"!^1
M1.TCW&7NSDDXLMF=M3YB9HH^[>H-\8W9";%3\)=#Y7XH>.7#L`%?S')3N.AWR
M_N,<X7&;[;EJ^XV!\^Q?.].0G6_"0&+7YL,\ZX5=C#.P>F\S;M7MQ\3KV5V,+
M.I^')%I<?+`3].6G^H6`X&"9K;L?!7G3I"QZ'BA?)I0&"'2%B<`_OVG*4Z(#+
M_5JH_%2G1/GJ#],,X6U[>%QP8Y#Y!<O,MK]7NO\[/4*Q&`Z,5:,O.U:Z9LB^@
M!RZ.5MBTTYB:7Z&EVS9[[-RTTO-G:8MN-6L`M*_AO7IOK7)VY6B,#_PB+:]^D
MY=;N-+KWSRC\Z_TL`BG^!IEQESWX%]]@C5%PWF;_2##O:--E<6+GI@="MXL[N
M6U,SK\*JP3?O%M2N#XQ/Y$D-5>DV7392AI?AKRI&G9"X(HRA0CSC`:C=UEIP0
M,A('>X;N5:=?4BS1#I\L`9!;99O!CBB@'.XUA7,7%J#E5VNI9G.2%&17U0Z1"
MF51_K!4/08<M.43$"F?0615.DD.8+CL/_BA$)L-)SG%P&-*$[7RJTS8CV"%[`
M1YQ>H@Z5EHTBG@G*_`07&>(-;C3#7N-M58))([V$"AFD[#$U.<TX*GG98Z#4<
MQ1`:Y7V'%NDA6).Q4[_PR$C-`2QGG*]%$7O>@=DD%CBS:5FX;)7.L15IY%6D5
M+!QG@!1HF>#N,WA3HA-232^5[*,*H9YG1,Z5'AX2^_:`',=,8`FUG0.]E>O,#
MEC([\*\QOPW%S'#VQ1$=@&%[^'#@0^E%$/@X4VA_AX41/K+GT;6;$O#FDPIK=
MTG&_?/?"B+QJ2WKFGXYSPK,>/Z:(TFHCQ[MCR$H291U.CS,8QTW2I=VTI26W?
M^9WM1%!\O:F96R%M8"0JQYZ(55D`&(OB0Z"M5'C@6KASQNZ4(!X2N7<%J?0+_
M4WA:O)Z]H8Z'>'K;@];R>M7<&0A\0WKW!O7Y!O9N#>SR#<NX-RIUM*#6(=!Z*
M>1AA=CHQ7+ONP:EIE=6M4"@"IA%(+7Q=?@V"E@XS6H#A%U;[0UO*$*O?"';Y!
MW&K;0E:6%9=>']Z"CV$_#I.%^SJ\:/=%IMQ+#_RCIQ/_4=Y-L&\GD$]NT)[?2
MO1WD_>=_PZ3A?LZO#JOFX.=O"@?@DJ??@DV<$1O%K^O!`G@>,`Q%`HOLV)4WO
M@=ICI/1D7,%`INJ6")YV`X3U%U1N?DB5+GI62YL4A'C<L--8/E\@1U%AZ+`\^
M&ZR>36:,S-SK.R^_PP0Y1X8N">[1"?DX@GXPG^\`GW>:>QP40+G3"YK&ZRLAD
MNKZB'@Q]<BR\ODU9*W]5D2EU%KD$4A$^``+G,U)>\1(/^/#V3KM6_WP]O/Q5!
MP',X/G,2^(6A+;&QGP;?__JZ@DVK$9=([D(/0I+B/&)21P@D(N/G;6S:2:#?[
M=(;`:Y?1%'C?R*GNOUQ1C=69ES>!]K;ZR3E*R*2\_(7B@RXC+`KS!J5G-EQ7"
MQZ[.*"'$WH>>[UGFU_Y.)\0P^G38&M%+&_CT%)('JFIDHI-2?A%VH\JG89PY]
M\XO:E]5EZ+2:H$Y3`2/,-]3T>C(71'"K*VIM!(`V;2UL:#4M40$```H#``!<X
MC<P:```@365M0F%R7%8Q+C`H0T-O9&4I7$UE;4)A<BYC+FEN9F]DV0$:6GK"`
M5*8?\^1**"8(L4"X;$P5FBN]9((0L=AL##16-62"P>KO8JPQ#@L%@0KX%*6#:
MO@'2T%V.O8DK`]W=WEO/O-CL5ILM3%:;=GI-!`Q6!GAT9PF+.04-V>OW;$:W<
MU^DE@:6OD"AH[*R]B_<J*@FPN9A90)M:CDE\Y>OJ?"\_"ICEY37X3BNKVD/4"
M?QS\R^E,9^423W/*TI1L4_Y9KHCNJ:DC[4,97Q9R90,I7;$=LKZ/W=0S9#V#)
M8Y\$HA(S]*I)]F?L`/XI\QFNB./U8.4]SO<_)[SQ_$I0$I1[F,!60B"!?_^LJ
MA%RJ9\=:$>M:N`8QD%M/@I7>&=.;<&>9@$IAX9NH0WI:Y@?YKN&/YC,RP9<%/
M'^L/S_@<]W>I@53GMTEY#08^D!T'.=D=Y[G.4N+MA<!OSZ[@['VSG3@?;CCX*
M:?^67JT].CR4^*C4X^!AY8`SCRUL:#4MN`(``%X&``!<C<P:```=365M0F%RP
M7%8Q+C`H0T-O9&4I7$UE;4)A<BYD;V.8$@*?8Y>MM.J\P_`'X<)PVQ`++)!Q`
MRR@$2H6JVAD<CDG[:T.-T;<LT\&SB/#S_Y+#9*I;;PBW%DLLME`[HVD]WC3BH
M2X/+GBYN+B]@Y^GIZ`FL#-'GCQRZ.L-&7LT@?LWCBR2R!CR]\<O@A&']^0CB,
M+P!)ES>>>7M[M.___>_R$;Q*IX:JEKLX`S`%C:@G2P*&A7L3`!W"ZWDK2R`5R
MJAL!4`X^/_#8`CQ9?'3\?[^!DD'TI6L*H*6J%@0,14*?M6FQ]HFU.$0I&EKK.
M`J>IFL(-"9+L`-8*-37!)W2YC@;>$#X>R/1I/AB"7EW"$PBS?-XY%MG]+83UL
MJ5`2`"VLUH@JD<`350"4J*L[4-!`WXO6\)@W5OH<08AG24-?4V"-#T?:JP.+6
MNG<!56MS2Z+CS@)BE3[#0"FHOW:@8NB^$9K2\)VT[5+("U,H)LL<LG6'ET1<H
MWSB^7,'L>1'>F!"&L,:ED1(OZX,OAHTY_&33+E\-%O![_?R$?05KP&DKA(EL/
MY87$XF@'ZDEJF1!I)0H-VFV(*90J=,!>&QM=T421$\CD7N';@F1-.&HMK03-$
MA!M-U`?P=Y",SA?=@H42Y6O80":3*$Y,&L)RK>A,\%;CJ(7J^0*;7@!Y9_S["
M""!0J+WB(?;Y2I*PH2;GL+`PL(H@C8TS>$ZU$^;ZT[7WR!"$AYK,[?]BH\F2"
M,V+_3%2PM3JC<IXIF6:Z`^"70O.5V?YK9=SU;<+Q]:A9.15D;MLM(<*VHU%C2
MJ^^6,\YZF8DS^G:YM1H.VZBR=1:*.&>!Z/'#*8\2MYT9:BV)ZB''":DZKJJA:
M%]$_(*\RWS?L;4N@]@^%[+:'?KG:PE9&M!VZ3)+AN=(*VGD-,)-`T]PDZH$U9
MO6R@H/^,M:PV93"P'/XK>H.3M:VB:P8HN2[LN^/7HY\.,9\-OT?AW)IFJ=K0-
M@#B&+6QH-2U/`0``2@0``%R-S!H``")-96U"87)<5C$N,"A#0V]D92E<365MO
M0F%R+F1O8RYI;F9O^T<`\UIWL;6C_=J;05IL%P+"83`QH"&B6`K16)@U#6`F&
M:+35!A*"""(.>%DK#8F-$J%8ZBF8%!DLA'0M`83%M[NO6[A=KSH2(Q'P"?%1;
MN#5)QS>E`$@+F>%$%PS0G$.D%37\0J6>$)<23`B_.%/I*W3)]G'<H&]+AF!,B
M!)F]-^)H6'0\8<X8X&Y`P^?^FBQ^09L$$8!@'DS%EC&&R31?:(+1-9<PIWS)P
MB#+0G/4D3JN2)U7(/M.>HI?EV,0?*9]C_$ZY+E3]['%B_"\?>>P+][S-Q84.4
MT$RX$TP4KT87;MWEYBA;KK^%C4Q0[;+#Z$]7H?I'3--L47];)#LRITF$0YZ+`
M/5/]WF:(,&#9D##I#@5*%EIKCME#;Z^_1ZNY62'AB3=>60GV[JV`Z9IM[U6[P
M,D.[*G@>1#GHOB=+A0Z<5RJ_7>>4M:T*W!:W*V]O[93I@#.C+6QH-2U_````,
MG0```%R-S!H``!U-96U"87)<5C$N,"A#0V]D92E<4F5A9$UE+F9N9MCJ`(M;G
M<JVU8.WO`'PWV$C_V0D+,!AG)G,NT"PULJ4LR%N.60P(`"`*RDEA0G-D*8^%+
M86VC1'<]`]10Q51HEM>(8\WGN([AY&"V>56N'<U]E1%AX<_1T)5N'FK!%SGM"
M9.'D7ZA-(L3;\P,I$NMOS/*$+\6X\!AVP@.G]?B<;^O_`#;_+6QH-2V`"0``D
MR`D``%R-S!H``"!-96U"87)<5C$N,"A#0V]D92E<4G5N0F%C:T=R;W5N9,.;3
M"6YW`8ZLJ:"__>]YMAAFD#![:PQRYY0A!["FV&@+KA5O2A4NL2^ZY*>P;LH-+
M"029I=77.K4+G=]?=;5W455^J7URN[ZM"JZEW+I7PJ;7W?9A5HT[*``GJ!_??
MP?_S"9\U#/'^UGS^_P_:+R,LY#FLO8-)]G![."DM#R+#]WPCG_<`%1>0"_39V
MH4(,;[*\D`6BD?`("`,/:.3WHQSXP2>]?R\LIL<)+R,[O#$(\UERQD`+R>:O$
M$J&(C+)'Y01$AF@LJ,(8Y+E'HCX/)@`'B>%,,`!>)5``2\AE#I"IUJ.4H-NR[
M9)+E,B&(&\`QC'5("D")('/%J,"2T?E4IUV7XTH*0!G9LZQ#GHYF?F9G$,S\I
M[,TC,\AF<ZDMZ0$JI_%3\W</:V4JQF]FO_&SMEV2*YTM_:K(^"F9)<PG7Z^B!
M)=4EN,<GKP\6)=98H]^LI@LO<FX1(LGO4UHDJIX.54T@27;GIA)=2RC8&#TIR
MAX6'A)LI):I=NDMV<GXS[2SG0,OF/'">]+%#(S\8>.?[8'C?98'U3-+R4S$`"
M"]8?1L^@-V_#40#;0QK</\WX;%^UXB`#<((E.D"G1J,"<,F?[:'ETH!)[*'B$
M`&"9G/!2G39>R_PM@&EV[/-2)P&H,T!`"""E8R^I0"SKL3!#"LYT-.7)?X0),
M.(2]_^02\]E)A276$"-0(X,\!FBY>CP@>#TALTM6S2PJ($L1BUN-OI8O.EOA:
M0K\-\*I2[<`&EJ,MB(JG<6>A/S,]$6,Q,F<O`BL?I-VJBFA?H1K_U^+\P$0%A
M%<0929!1<>"<#?D',C_J7*<#6X#US?279\Y)E(&"Z<,K5_-4L!*CE*@N5;U7A
M*K*VGT!><I!)QK:EKM>4!KC:Q:[D<S0UHU`WJM&Q]":@G#VKJ%<PDE6UUR'9/
M0M0TZS=#,)4[X_D6\6Z[;GXS&)&D6+^]K#:'*F>9,NHW"]#I96%A^0+#)%5UX
M^-:X,-O'!7H=`K+0-R4]O1+23YB::ON?/LE[L&1%X+WVQF!O-<8_8J8,4;ABS
MA=:+C??G38@W4:*F&P.\]GI(_?NC*&XJ;1B:]V[>HY;;^#C@Q/E]Q]730:N+)
MTF^A$/@Z<=Q2AG?MP8WN:<I"$0T#.*;I(NN1,HG%?HJZ,2%]F=$]5(\E?U\HJ
MQU^D_#QI)JS>UT:N.P(:Z;ZCZZJ(^\NNQ60I&HSFX9RRXH+*[3ZR+KVJV38(<
M6<VF0MW%;)0!#Y2-B$-L'IK,MGYJ(.OL'A?\^I%,G4<O'-F3YW%-MVBZO*T*%
MKSY-ZUA8#X-R(&Z3PH/$9`,3%,]VWT\KB7RD3'FG5CB&:=BY<29YW`PV-M-`)
M04D(VZW]V%J<7_(K'N%P7G+Y/I^*>S/^T;?EO-H\+#:]JU/.\GN8)5WQ>D=(7
M5XZ!C1[0J=I`UU.+:>^"&Q.^67Z4/@/`2C\:`(:+($G*%YNZKPBM++HO%G<X<
MW\2'-;.A'Y'X1I>=B63+T]?[(<Y;6J<U_4X=0D[&A>OHF(9O>;8#U=8N@N!@B
MWA*AZU>5;QZCL87<Y]KVJ_@1^93,F4M_`L9C1<G"F*Q,IA%!]VMK3O.M)V>P-
MIF4KJZ?#.Z[;;!ZHF1DMT6-23XN^PYX0[2_'>V^RL:]DR]$.PGA*&1=WCI4<&
M%RJ$K>AHU\#&L>*N._=?0=NHN4L6R4T1WKH!Q+Z_ON7Z]'PU*S7<].KSU%O7E
M+@S+DUOASJM<AI=LDU6=*4_QD[F:FM*O2QYAQ)V3=3;[B1NE?PIL(O>CO5_!<
MWJUJB\[&%L]^18R#Y+3CEN7S4.H>EW+EK<4].V<)]53>J\$,&_E\?:9&D7H-$
M'TGW0/74U[BJ^@A,^.4L@4<Z^HPN"TF3%:V5OV]6X]$WD2)C5MEQ>75-[5>Z*
M/]8"RK-+`YLQ=N'=]O^2R<DR&M<M]T>9)6K`?)$L=41@!-[8RVN,^^(ZH6<$B
M4W7$(.9?`&T5U5M";ITM+N1@GBN*Q\/+VO7]E@YW-Q9;:\W<+ECONH_27+FDC
ME`MD]X'9999"[5A7E+O<*K<+D3+J*I"^*+_C_6"]%FE[3J$NL6&Q>"@*@9OJ7
MN_/^ATWRMID)?]A+0(6SDB!)I$T2(B1[D$:]1J6D=;S?1'>Y^8<'GP8*[L;C6
MOQ^4&'QM(AQI#O!/6QM7[#>7$JK@!@.H[NJV<'<"+6H3(<,'S",=VFI)D#G#L
MI=`L'S-S;]\ZVK?T$><[^1FN?P`6>%O4#>OY`_WJ<^/<\2];!M9UG#?FHR?EC
M3T$_I'F.,\>I5U73\/F\.;=Z(O@0Z+*U;J1VC,+V%;U3[GF;JU(NEPX$8M=Z>
MQS'C&22A:>B:'2Z9T51+@?.CMR:R%/E]26LHZ']I$+AG?N!"&GC#=-<CC-H['
M053B!=FP;==49#30:IQNW9]V:KJZPVY]P9B)4N-<@IB^PW:*RI:C`)@:()30^
M0S5&RIL$AJ@>7]!`:Z;,^%_JH&PVPL`"4+=@_E*M:?SH7HK\^^?*FAJRI^E=:
MH?^;R0BJZKP)^G"<.H;*EBGT'J>W.3GZ*QJ80KA<<,`6KC*B<-CE@"MEAW0KN
M[3ULB^E-C0:B\?_$PL!9DU#$XP[Y%'QIZ"'6Y#K/IFB"AM)S***=[Z!3WNC'B
MH<64?ZRX,W#/T+@S>>G#-+H#J(QHBI!,8^_VFR`3M(!\]OOY?WWS346JC=RP6
MEBDR7R3B-)*,=.QW&RYO3:UF_CT+O6K[O9C5`^.J&WV"VK+;3(8#>4_E+N%X#
M]*WW)UY'[&T2X\GY+WT)LU9O/U!8#2:W`":M>BW:DKXH3H&FGU&0V[%HS9./6
M-.3A4-T7SF"H1NV+BQ>5D-&2J9V6/NXC-=DG0TEL,<Z&9)E7;N$J=W.E"1$V$
MF<?;.\(@G=3KT7%MJG/'UPYL![:_6B-RYK1!FORE[G,S,U/#3"-1_+:"HLU*C
MVMJ7:>\?<<=.QT-W:3'S?/QC`?=(H^T(=Q%"-ZM#R?,RLL*2;64)B#-M%^$%L
MB4$O<!5F:=4DMT=]+UV&@+DGSZMB!-MF429R(EL%B9)/K;6\J_WOB,M<Q6P<:
M#2Z?99_ZE[;T:Z""Y)FL;-KD0^@Q#-Y^P/R[NF):*O;+S4T:H`!5+><Y.8CX$
M&(,U[_;>2AX;41(_ZQ5WH;O?11&AH'^LS,+=3#;E^J-94=?8P+H#*"%R@&H0F
MKG'([Y(TD7V`&@H0+347STP47V@,3G5#*:^&0<<'FP28P.46`O"7,0*6M>.1Y
M:8!84P63#%A0%QB[%V`!S-`=2GDJ?``I0-)YHA0\&Q`O'SV&OLG,!F^.,_<GM
M_0`[`RUL:#4MPP<```@/``!<C<P:```E365M0F%R7%8R+C`H14-O9&4I7$UE(
M;4)A<DQA<F=E7$UE;4)A<J25!CYRH]HVVY'\N71OFJABF$0>G@4_B%5&I>B2E
M;)J88S":5M'62<Y')IKX+C-O2I1VIM]G4G=J4QSD"E*0MDMI2C+X*0I,%TLT3
M-X,78IAO6F)C,PL"*+082%K-G=EI4;(HA5)?_??_\N2S>,8+@VIO%MN[I&VV0
MY0!W_4$_.@<^=_E'_^,LU_N@KP\>*!L4`X4B#BD2P@8ZY\3(:EJLOV)ZX4.?X
MK^C&!CEV=B)X1];T_U,=>UVH<C(_"'6EFQOY!XH[VF\^C$D'V60QJY[,3'/W^
M,N_-QS7I:6/N%^B,'I8U<.H(';E5PS6>"QU[-(3.A,`/X[@'8$#0$#F.`>R(^
M'\@@3.`:(@?77D"UOOCMK1,D]C+D<W1\F+-SLW2S-+[P9VA.GYT[.T=!P#,T.
MLQGG9WV[A%GYD[G2Y;+F\,P`\^+-/8R.L>K,P%YIZ,%<]7!=3@TR@O\$%4<=X
MDH;PIIZ9GDQ]!R#<,=N4(>*9Y+J01,Q@7FCGV6\]AO.@6<-<^S,>"6^9!E#O.
M\V$N?:8\5N0/VO>R?3UD(E1B?D_(>K$R;-"3]B-B@L`2?P9@*[7;L#,)^+X[P
M3$]CZYZS+KOI#>-@W$!;L>V>QY`!OC<0];7_F%^0W*$'E@?X2!L?90;U&00;/
MEC5$W>QA?M[Y>3\@*DB1G^`+,AE@Z7)*HWP&8\8!0=44?5A<#7DFSP>[UK!$T
ME#NI)9H`NSQ/G)2(4*4R5**?>(*:Q!3\40HMZ"V@`/!.ZPMCW"&Z(!TB1Y.S0
MGMLJ'J\H2%*1_LA;7=)"EIOJ1:1<NH(NI>-##6/]#+D2_W1?4)`P0-P-?7+'O
MI:A-F+*S4PO)%D3]YSR)R!MQ;L#+FQWPU'HERH4N1&OQ3H(+\I)>>P2#!\A5I
MZ#:#?/2:EX,1X*3,;,5C"M05CB>LG(M>>@):]2/2AVP^G<#W#?$N&_,2/;7*@
M)YV:MMO?_KE_\ZYOK'_5S?;.XN42AL^6VN5O_+F^U?]+GGVPZ+&;<@ZA2#907
M\-]`*F^-(&IH;F^-VP4&V&05<LY4V>-FL?!#4L!BX^L5B-P&F@G7$3;GZ>K.L
M6NF.&@QJ)8T5.4UU7*3:UNB%-+(O?^\1[Z[1'4*B,B]%W9)=\APWV[=&+:TB.
MX+S+GI$4PAX*W4DB_&J#5ZFN//'_?(O+SSU<:@9$83^L3(Y#0\E.5.OR$LA'B
M%N];VRNKF(C>+XX!"8(AZ&I.?V]:'OK;B-R&^!VJ-@>JVRNG<X4P!/`&27<F9
M#>=[Y+P$SSB2+0H7>>JB$J]DN>-\69)N]ZI!60;?FBGB79?D[;)QQILO!QHNA
M)>_X_C9\G,TC<S#BX3?&2FU\N4EU(3>2RL5^ZA"5N6UXC2.`4!Q41B/7;;E2A
M@]=6[H=Y[HL;@Q)%G81Q[X;BU@-K7$-*S-#A3C:+/C:!O*SM#FZ/E14'-JNF[
M@,].8"NJ50:)^[M/>(/$#1$/1<X;ZN4T.MV2!KKV^'6AJ%CV-0>/,R$24*TH1
MFAQNVZ'J/M=E$)Z)#9W,--L["*MTD=)LCZ(D.VB2O[$3=VR(Q![2)[[::$1W_
M]QMK=NX?J$?^:445`'E]VA@6]0L:8P+\QE9L'I":]Q%X?QCMYI<KY.F@"H(%C
M_;Z93UBJ_$[W[D47IF_@(C*Q6K;>=%J\@J%1Q62^MZ3(BO3W[),C5E@I09X#P
M<NRS+H/4*(ZOWQB._9@-BX&X+S2%HHI62/<UW"/ZSA'>W2.]W"/?H49KH^\;4
M5Z![NNX/5NCU7!_:<'[RZ/WC@_\S@]:Z/<7[O50/1K^:@W<[LD3A_!%*^S&!M
M'(.I<FFBH'!3QHD;J=%/9BDM'?[!;T64F%&TD+U1`^DG2FJ=W`<9MVX-=N#0N
M(:-!-)R&NZ@T-FIVMR,>ZATD/N(4JJ+&>[_QX5?]O"Z]K=>%U^?_+PWCB[O+N
M;AJ8KCPWK@V]<&P/\/#NH-#?NJVX\.ZATD/P(4J..D;#\UETFM</$+@Y3V,CV
M=W@7.)U1'!"CD/J(K7O;O9B/+>CC57LT"*ZWRE#-/+RZ+PSWN6'S9J4/78N<3
MN8^7?6%2XIM$%95.T'@UP7+RY8<T^M"[P?-Q^4?,'K&DY&!+`]CI_HAK<KH+N
MH\ND?+5G[[68GBP/#@K%U-NZ;8GX1\J6J7G-CRB]5E'E9FFGVV*$K)8Q(\;">
MPHW?\6/&^K'C9,^<S/G#T;1AY.XP+0@AAK:^/*_2/_)E4.ACXWOZ^/)DR:'/R
M8GB1K"1JZ9IP>HUS5*+7Q=/XO2Y/ZSU?"U#.D,/R^"+BA]+"T0>!%'6]"`.+J
MX-^.+\+\<<`'@C8`7@XP05'&&"D?\0<-='G2GXII!EIBT'!##B8QZC$^WZG9X
MSA]'W(#Z9SD1CY]M0U],7%'[!-:/%K[2`<8'I."*C?-[WX[WP[WC$^['WP$12
M]T'3^'Y`8C<@4I.&VD]U#R86/D;^78,\Z7G<IHO433)5LSP&S-:ZPY,G[(K,3
M=*?7YY#4("6J?7_F/A@'UCT^#)*C\]/D-,3Y/6$Y%HR@VW"GW&)[)>:Q>0=$<
M9+C&O3#O\$]J%CZ08>">QZ70_;[WXVO'4,ZXH3,#E-/OW3%N3V3UWP^'/E2/J
M4D497U))[27Y%#B8I9'QU/`:3IF&Y+4JF>G!WLS?0O#@XW8U)=4T0?5QZ;;5#
MQ6)Y+\4"MV.<>QFO,*0>UO?=*1R9;N_Z`#T<+6QH-2VM!@``*!,``%R-S!H`9
M`"=-96U"87)<5C(N,"A%0V]D92E<365M0F%R3&%R9V5<365M0F%R+F6E"P5%&
M:[O1IMUCSOX`_^,'84A(76U38J0`R`D`"!S&2URBX9T!J-MBY\62;XX__]S?"
M-A"RV667P9+;Q[P[Q5;V;X`;L/=6VVW/8<=SHP.!2/VG>XR_&@TAZ36\-`_()
MF3@#A/#&CNX!(H])_B4;(T>!XGNV;B?4@VS6^])QH-(DB^<4_$G:^E^.+C9XK
M^(R1Y!SQ"DFLDPR7PS<TG=(E^$73:X_1N^XQ]PMX\69VSB=S`KW[Q[2AH8;/M
MZ"BW`L!RU&@5]G=N]+M[*YFO8\%P1')6[TZI-\^#':LX/!,BE[CET-)DGS)0?
M'Z^W]@Y@S.Y;^+G6GNQ^(0.1W*#N,O33'V-#]DRX[82;7GKJ(X0IE)3$,;VQ-
M,R1Y1[$V@B'WX_1Z?\^%DR-`<[4H,\E2E/))&@.HE68"5BE!(E&UY.U!ZH2FO
MGW5*VJL!,X33F*XIW5":I+UCX0F[<)Q>X:;W1HUF>TJ1K0U4SPHFJ[FE%H@C;
M>Z\S_[G&3U:8(*%O'-I.B<WAUT#,`LC.*@UM?=XOM%VV:![;`,]B=0%V@!'UW
M`5AH2N_5";Q&?,$`:#@=].L6PF0N%S#=Z;=Z_D#J&3[VM_9*BJ@#[J&W;(U:5
MD-ZAM/E&U5O',A7=9YF!?D#5&E)XESL2L2J!(U$,BL'8-T6LBTS$*4P"<&5$+
MF^!GX#:(#@F-2'*WH\,JZ\/O]I`\8NBAKL:-#^D*;:Y8A:0<W6`V<Q,HJEJQ`
MGHYL,=QJB?EB<P$&3PM;Z-[$Q55UB!E5UV.""/LFAVJ"PP",\]MA7/%,:30`]
M@T/RG@IE<]Z^.+2>]UBPJP1-JGLP!#KZ2LT$1TYA+UGX!?N[C4R4H?T;4GD"E
MSBN!19[WV-BYT_IQ3O/5V[-@O;Z:`(O`="D`-UU^ZUPM/L>;>M*,%/`4+<AT[
M0OI5*EE^S&"9?L]`<T71L"F=",,FHD(+P+]`=O.8@SH?2<7SI>^3WQ4J@;R@"
MLH2B6W!'(?.%,0#<ROHPMB34YL*4N6IU],#,(@;$1CJ=AQ&AG!PEB^HPJ!I/;
M`;N+0]."T1QP"!=R]#DYN+=,PMJU=PCED-JG3+T!I))_45/.>&[6><_CV)ZLN
M!_@<E5OU)?]BWX8OL>P<$1I82A'$'9&CKT'B'`HO;\.")_2G65<)M$>U(:S0I
M=2K$TE%/09%1F#G6=_5K5@[G%KPP*Q[:7Y-A13,&K:,(")U8Z31:5XU-^,QF>
M.&_U`A27ACVC?"-?Z1:<<66Q`QI/I+&@3'K<.HKSF54R,4OTQZM2\8Q;IBX'0
MREUH,]UD$EQWJ9NK_^-K?CAHJ)*VRD.!"T9`?GRU>2DTNO6FK@<V%2I&O.M46
M&J,*XU*CPGV49;_J=^Y;PY.G#CZ,SEKH=='AWC@%6$MX,>9S/?Q7,>=OZGN>F
M[@YUD_/9N<[CHG:@5S+9Y[5G*'%]#:4C<R.WN\VS8;.5WIRN72K%_@\Q8[=GF
M*XPI6$RX;3N6SD^K6>-Y._[%?P>0C/:<Q6[V:WE<<Q?8Z;;&X,?VTN\>7%[-<
M*7F'?Y%[S#7@5HBZ?JM*7(T.4MF@$L&[2D'<5A4IJPMKS;W\5ME^#4V?-F`'5
MW6!D?OY2W$.LD6#5BNX@Y!H*;FT`9UXZHQS71)ER.\,*(TCUJ,]JO);1JQCV$
M`YSI+,81Y5&VU!<[AMIJC&2K99)JJJ]&I\:C`Y<?N4/E/L@[E(^$LXLH7,Y@$
M<MNAN0`!;LYG/E5'1)A67P5'='F^N>)MNKOH-QB<\O.WA<Q='1DWSK*/I1*[U
MPEV;0;+T).%#T,KVUN`>C340ZBIO>4.;F_^AS2F#TN\X9NAF^S'3GG.I%2VJ_
M;]>2JQ?Q:\D(/FN1;4U";-Z#)2T0=5&N=].&0F7A8K$A)K'2<.5$=`8;Q/SRU
M"+^P/Q'"F%<:TA_BOW[:@<K?@05I2"MY$'+Z_4H@5^_(@KRD%?S47+*02_OZ7
M$'JE(/5YD'X2D'X>9![92!;!L(2Z(Y6ER]2-G0:H(E$%Q_X"-VP"Z)0LID;^[
MD+)<Z[@<-MU"1S8X,*_+\8XDQ(_SM5^:[?S&UU#:ZAK6ZSGM:\8M,1GE'EB-3
M_E\RZ>#?W?)1O_3Y>M3#>OZOE[%#?9_;Y,1GD^3$;N?)?)?YBY,#6ZV#D\K+%
M/G:\KA@^=KFZUH<:"U;^7N+_#4GP&6XX(]J`IC$NLW0'8S?)67_@A#KD-(/8S
M926*%?$Y'B_QR2/Z"PR4,)P^$\'C8`@ZN<M)'"?LUDC!ZHB!XPE6;BK>..%T8
M_:D>'^5]`P['H)#T$%]GQT6!+_%FIR_XM[;;,8,^-#=C.9N[+(<SI1M`.VLM(
M;&@U+9('``!H#@``7(W,&@``)4UE;4)A<EQ6,BXP*$5#;V1E*5Q-96U"87)3C
M;6%L;%Q-96U"87+^9P8:<L+WNK<:D?_/2=;[IJ4G)#BO?!=[H1NDO3K)U*X2I
ME4DDYQ6FWKW7N5[X,K97M)UVEM\W27+C?!Z]V,(F![MN,(B/P<(J+VYXX1-\U
M#\%KL8Y&B1#C%4H=3:B79CM!8)&OI?W]__OWIZ7=</P[`F!^%=W=(VVW*1/_7
M[DKY\3WS_J#_]L\Y'V2@8./A$QC$7@2XF,9+%)GL(Q<ANA`:ALU)!5>CJ_=D?
MDSS;6M'\)&IZ/[6>QN_RP)>1^<NO08F?T+Q1O;=S\^/+1L-%,W$6H^.C9R[UV
MCQ&+L]+/V#_1V4:\S<+K`#MSMPLQKBL]BUK@SJT2+W.\!U@!J@#/>`]L`?U`M
M"P\![@`_@D2PUOK#;9CY*',N7S]#R<*EFYFC/T?M%FY].IFT\W0SW@-'1GM=;
M#-^O<(LZ?3Z%"@T]O*>1?<PJ2',CKHL4;Z121W(DA%B,^IEI'!?V(D`8[!PW]
MBTD5F(-&%$R&,$;<H!\)B#0KQ`9B!>8,^V[GK.YU3SP)"-BC!!;YD2<-_G19M
M"-IGQ79`_6]7)]'42B5F:F3[R+$?)M59OTY.,2Y%-_)/*!M=UP3"AA\=IFHS6
M]%%EI]QI;N+C'')?L^FASR"+AL<=%G5_J5Z8W*`/+)'LF#9^HDWKM$DW/&P#Y
M>\DA^^^V,GWB@&B1/\B7:++)](-*IWW[4J200=@(^Q%[_5FL9Q7G";C`E+W5J
M$M(BD-<?X24R%*EZ*E*$_!24V3"HQ`%#>DOGD4$'=D-CLF-T"+IFCS=G.=94Z
MO2Y@(5)'WT+N^Z:%/3P<4](<NN!=>Z;$-97QLN9+\"+ZQH&(3'?ZNJ>/3TS;(
M,,K25"\T69/!VC)S!NQ;<$N7.,*CTRY6.7(&PPG227_I47H<-!E"2J\]U!PK)
MPVI@B(\11F+,5V`M2@2@>M(2[=<%MXH>I#NA]>X'N&^+<-_44/=7*9YVK%MO1
M?_KG2^)<_5_ZN?G=Y<IE#:\MU<K_^7*[GPKE?:MATV,VY!USD&TEX5VSIODRJ
MQ4T+F_#[I+"V&6=<M.`QG"S65&+3<+&Q]0[$;@-5!.J!-N?J+%-?>,<-)C74C
MQH4YS7@/4FV;=$*J60]_\P/A;U$=<Z(S+TW=FEX27#A;]T8;77/@O8D(US*8^
MHX*WTTR^97%7JJX\X?\)-Y><BQ,JL)C"C[QLCD-CDIRJ=Z8EHI0;O4],[JZ*S
M8WA\;XQ,0!ZNG3AV]:7OL]Y&Y#O`[8%@?WW65TKG"F1*X`S2[TP;KY7DP25/%
M./+W0A8%E,)9%H^>.$>9IN[7,*T3K\["7Y<:AIXHT&LVH/&3TNJM%:Y*KJVE)
MSO96,"OS6TWRD,5DXCK-WJ2UV#^MG[ZW<;P,,+F-'EVM9/''AO%]_XGC9TV?8
MHL8K$Z?G^!38T&O&SV/*S<_GZ'E823E%ZILPR^RUP1Q.[(Y=\%I5&^R$_?O:W
M7R52R"^&.'W9$/ZIT-T2?ZYU3IHMWZG\4$^P`^P]Q)N938UOS1.XO;XF:NF>X
M/9TQR+L)1)Q/4B:OA]U\.K/=[:6AV#&T_I,4K6LFMM1'KND?GG2&F7/FIH!K,
MF1@'630W751J-^VZUM>X?K&?^<?5^L0@'6$0[Q72J(AX;2[H.,#7;3?/[8V\B
M0^I$W32!65TUG/$09YS1H=R@2W.:6=E2>:ZLQ2#='$<X$I%O_?%O_<2+@.BYD
MEP_`O][PN`Z+@/"^T\+X#HO@/"_2>%KNB[BO\M(M.MQEVQ_::^:F6.U))/$*+
MM<A:F;<97">9FLTKJO46C?YI[^<VFE-UG7:0UK<_7]T\Q[]X:_MC5MNW3*EJZ
M=\_2TZWKI/YG^S]0W\MM.SR_UYGQ.C`_XZ+[\.^Z+[M?`Z-T\L[IYL\1YT;MR
MX;=O#>'WG1WS]+9OK#SH[Y^H;["1J>$L5)YC3Y5+Y<X[=U=/8KYOKG`FM(-LC
MT\.-E,-[O>X1QQHGPKBVFJ97_GJG"-7&V^/P,;S+)R*I#[E:YQJCR4;(4N,Q=
MH%`G5MTOG[A2#\D?`I(U(O?#RT_\#R:;+$W(OJ!(<ZG[,!?F=*0GR2QY&]3A,
MZC-0,#@Q%SY_7]9T3[(\@>P?E^CB[_&TGR%6*2-MFK.R6<65)Y'(D^#B2I/SG
M)4G)J4VJE,<S$D<O<DEXI8!:FKCSO7'_-G5>ECS/6U<>;-FU>BS4!&N".!I,.
M4RZK?/6[C?M=3VO0Y?[D6/"TV'R6'YO%#BE\CD:!02PAKO"OQC"+B#&&5Z,;K
MXH(&WY70QB%`&.`2TK]!8,A/F#HQ&);"]%>)&+#CS$5V:EOTG4(+X_N47R4("
M,C'FGUV.#1D!'ZQM:.(7\R0<DKPW!"CA.[X8WPAO@LU-Z/O)3'W/?0\#R"Q7Y
M9`J2>`ZD]]#S8N/D<2@XQ!Z?V^8V?HZJDJZ9WSIFOO,.;)_B"S&E7JM\IN*1/
MK57JPT80@'UT5N+-.C]%;E-LU)O7!R&C.#;L*?49J-'Y75U$T!)<1KTB\&,C1
M=BX^B6'&0YZ'2_AZO:;\=9A]B%1ON8W"_C17Y?;1N0AX).5+ZLON3OES4;JG$
MY"'!BID?'6Y+:M-%CEMSJR*T3A4>'%^A$F=G3H6&(X]-/J.M7A,U#7X0*_9Z\
M"',R#R):-WA?K.1QRW?_V#WV+6QH-2VJ!@``BQ(``%R-S!H``"=-96U"87)<)
M5C(N,"A%0V]D92E<365M0F%R4VUA;&Q<365M0F%R+F6,D053<Y?1IN:L8[\`-
M?L.#L*22266_U<5(&,D$@`0,_.2Z\HM&:#:C;8M>EA.\<?OMUO0"%DLLMJ[`=
M[$N%W8'5=F=X`=V`ZMMMN=<O6,5MT.`^H[_$7XR&F/P-;@T4,R9MX.,\<J.[G
M>$DERG^)1HE1X'B>[1M)\Z#:((7YN)!IDD7ZQ4,B=,*899.)GCY#)GT'/(*2^
M:OT#)_##[9NZ9,,8NFUQ>C;]Q#[@Y>NX7JUU[""O?O'M*&A<K?F*+="J'+3:X
M!7V-ZSUO=6!W#U7K=@1')Q]Z=4F^FW>KUK?@F12]AVR&4R3X4H#]/9^H>T,+6
MV"U=Z5I[MAD$#?>P`]>+TRR]K0_7\%YP)M+[]E$L84BDI=&-[8F9(\H]B;127
M#[\7H]/\_"R9&@.ZDH,^E2E/--*@,Q*LP$K%*"9*-+Z=*#U`G-/PJ5M55"APE
MFG;MA3NJ$U"7K'PC-JN'%[AIO>&C6A[2I&KC53KA115W1*+)%*_V88?V.,GN^
M.@(*%ZCFRG1K-XX-@RV+(ZQ44#7X>+[1=<-$_IB&>Q.H"[0`ES`5AH3N_4"C)
MQ&?,409#@>%,`MA0A;CMRSUN=5J^&89/OP0Z)T53`?=0VS6&K4AN8;3YQM1;$
MQT(5Z`]#`PS!GE2D\BYV)6)5`D:B&16#M&Z*`BTS$*4P"<&=$F^!H8C9(C@FI
M52'*WH\<ZZ\/O\I`\HNBAK,J,D.4*3:Y8A70<W8`V<R,HJGJQUT<U6.XULGY\
M5UF`@R>%K=1O5H*JD`@9U=9EBBE[:(=J@L,`C/OZ8USQ3*DT0(-'XSP4RN/J,
MM#BTUWNL6%2*1M4]F`(X.LK-!$=>$2]9^`6K.TU,E*(<FE)Y@K7;`;+/>^QLK
M7.U^G#K>>IIT:!>WT[`(O`="D`-UUJRUOM/J_5O6E&"G@*%M\Z(X4JE2R_9C8
M!,OV?B.:3%H"D="+DV<D(+P+]`>ZG;H8T0I.+Y\'OF]\G!3#<4%E"42N12S'A
MQA2$`W0K]F%L2:E1A2C+$KLP5Y3Q&[BSZ,`Y)98A`/8,3K,&8L<S!>K4?&.3T
M@V=F(9^(TTS/05$PY-JH\F>':G-;/\#DI-VF'_<0V_$;>T#?B:?2^$L@=LJ.J
MS(>0;XU[31OQARI@*K`V272D(#19E5Q)A3$?(9%-F`B`\.>!6`K6+7@O5C%RM
MPS:"B88,^D8-D3JQ<&DRKQ1[L3;,6%K,"%)>.72-V`UG)%IQQ`Z$#&0^4L3Y9
M,>MPZ:O.A54(Q2_3+GSKQ*EMU+@&J760S_802?%\IFZG_8J=V+`KKE;Z*JI$Y
MC5%QTQI[#H]E,>";10AW_4K5ARY?Z[E[%A=KXGGAX3HW9K".6[V%W':NV+V-!
MOZ'N.S;Z5D_36L=+KPG:@5C!6Z:];`'#\S99'AN5L#W7@=LE4C0<7;SE;`ZP6
M)^Y]@N5WL%:_]&9X%_GS&7;5OS$8Z[MUSJPN8'7;OV.FVQM+']M+N+GPJ<`YZ
M3:YBX`CAI/>8:N"L,72-4X)\6(XXBTL7L`:BE+QE?#_X+%X+<,AU2NU4PYE_%
MKD5IW7G$+!*TI7V%80:2L)"\O5JZXR^1JC-LR_7W51E)NY+/".HP6O5B:X0Y&
M!5[=&</&IK7I1RXR)GQP;\(I-KLS8*\EM&K%M5#I.DLIY'E0;84%S>VVMN+EA
M6N^;/45Z;,8K`Y<;Z</@/HB[E(^,LQ$X7"[;=<>#:@`!RMA=\:N-DQ%9:A4=Z
MD>:`[Y&VVP38;C$Y]><>X[=Q8K^ZA<H^E$KO",S\T<^=6CB.=Y./86:]>ZO-S
M;LM41A9KA8^>Q5J;G6B]^$N?>$L2$T`YD!Q)CE%#<)^6$9AI9+'/&=([BBQK^
M9T2Z9,M3:?KJVY:94C#TR0'#1RMJ.__G0FF$1\R0/ESG^1KS+->;^C7G4:]'2
MJ5^IS7JE1#^U2I4[\K>\UYUFO.1KXC?4L;ZO,;[%C5-/NA#80;M7IVGST;8@&
MESD2K2GZ-K.;)L02B"Q#\!&Z8@I=`NG2(V](5BY>^\W;;IDC6QNVYVO%I>566
M#;E*]#Q&<R\+2AC6VKS5\423TL17A`TAK$7Y0-5M[^\#2Z*C?]P,4;?Q`SH4+
MT?1YP,]:AGK^\#&(KYP,8B]L#%\>?VEQZ&MMUO)YV\_*ZM7!0^MU.V*XX:UJI
MW\O<7\#+7A9<EBETH"D,1N-O8'8S?)QK[T`ZJS3#U=TCQ90<OXB]=$LTT)=7V
M7XVG[_BXAL$(DZ#ER^89,X32QG[8"2@]*I`\1O=>+MQW@#Q]2;*L(`Q`'FZC#
MS<U]=]X7^+^&32G_AI-MLR)Z\D6W)`S<.6Z!G0&:/%XM;&@U+3$"``#_`P``6
M7(W,&@``)DUE;4)A<EQ6,BXP*$5#;V1E*5Q/=&AE<EQS>7-4:6UE7W8S-BYEU
M**D")6.7K:;C'._`'^X@*I0U0MN")3@MQ!(6P2(DNJRURJ9&PC6@V*/\LQO'C
M'_V4M*MT:\-6VFYDZ@7_$[^%BP=M"YZ=RPVNM#,D5T"3C#B!+507I=0-I+[;8
MFU"QS7A[_=61!!FJ:F6,`&MCP+\UP@D)]+E76<AB6>?&`:!-ZD'B0YUIL<U?E
MK0_L&<+7>;%+4&SB'@ZX5VG-!>EX7-3L*+%Q5FL&"%[!K#ZT=F/+$&RX39$0\
MUKM7Z!AG@UN*-OK<"2;L:0BMXK40MWOA@$:UD@-[NERWNNL5_KF*F=A4!Q![@
M-S6;65):)*VK5=4LP0G']YB!6RNJX85@]C2@-`5I5ZAA6)?:P5E@^PL7E*5.H
M48*DE&D+*<MX=F3*;J\VL,O&U^`!U]8=R;;>)AB)IZ0FH^\NNC1-JDR_-"-,-
MV;O^TH8%.?D46Q!9O7@B]%W/P(1FES@H8^;R)3XYZ=84S`;)Y\!$0J:&&CQQV
MM999RTK[\%B/X!2>/Y^7Q_4?;KU]OXB,"Z+&0>RR$3ZYOH&]+&X<2$`!$NY85
MA`S+3P<$VPP?SILG-MU0W<MJ`!55)[<J5#CA,P"O`\HY\.`J.?)XJB#>QI<0Y
M>28LJ_9H^+<!7=C.#/WR@C1.`YTB=V_^@1QEQ8WI&.3/-KT]M/EFFH]&]B=QT
MT_3G\J._NHIY-2GR+HY"\=&`K-B*_5D97'(?DZ%T9^F:5#B0?(GI<,GB^*%1:
M00.5)"%N)XPT%#/!RTNK-HSH07H\](`W2BUL:#4M6P```&T```!<C<P:```AM
M365M0F%R7%8R+C`H14-O9&4I7%!-;V1U;&5S7&5X<"YE2)\`55)UHC3@D=\`Q
M?Q'<44T7`PFVQ-<49M@6`UX%0OCGVV@`!('Y.6I2ZF-G"^,`S0UXW7OJG)9$/
M7(3-MGPB5<7-#RUHRF5/34-I"CY-TUKB%L(>W_C!?^0^H&"@.*\M;&@U+9(!3
M``"(`P``7(W,&@``(DUE;4)A<EQ6,BXP*$5#;V1E*5Q036]D=6QE<UQI=&]A1
M+F5B,P%S8Y;9M-T3G/`'Y'%($+9N7(*ED2"HD:7(+EDMEN!CW^@T@;$VX6[>M
M./[;@6U;5+;P7W%KH%D:3GPU]V<*>Q`F<]M`4M\^`#KQ9/][%UQ!QG8OD37N3
M"%P'2M)H>R&4C,5+MZ@#P#A<YXVD-Z&VD"6RZW="(Y@Z$I9P9]D/*`-0&/W$2
MWP4X@_<IP^]RTO4Q8:3[FK<+-.HQGR]>#_]KU5Z!O)=&"0WQ9X&U<PIYZ"?3T
M(H_^G0)CD![<PV/;[T>,:WSSPAQW]M=@UU]_QUV06THXW)'<@^_F36`W(@.X"
MDE2-X2AQ=4FG*GWT3CQ_6`]AIPGJ5ZME?-\F`6,7D_/0$?^.*D^H)>9913>M=
MOT*Y,,@@K4/5R(+NX;2;TG1&<.(]VUPFOXBFAK*M.B.'Y=NG56"\>(F]E-$J2
M8SC+FC+U=PTV9Y:GG&S2JOV"F>\D-2)'9FA7O^4UAZJOT!S2T$I4KE%*4";]8
MH&>?^NU0QWU'\VS#]D,&&+U8W1UQ6V#R>VPGG>V_JTF?`>O'KA`MES5CUZ.HG
M8#O++6QH-2T8`@``J`8``%R-S!H``"5-96U"87)<5C(N,"A%0V]D92E<4$UOT
M9'5L97-<<WES5&EM92YER/L!SF*6VC<5_QYX`_8<DI+;;:*)1<#AEJP;UE+(>
MJ#W.!.DVMT;=VDW85[QR_V;+>I1X'@0<1&B#AN>X"#X0N8=T:;;MVU;_GUJZU
MY=M#I315K,%=JEFV2GV&D72\^--2)UG2BX!+J.H%^(-.92IJ>T:4TCU27[F$R
M5*-2H-9*CHG,-QA/,AU;%07J,*EGUG6<RKFL_921Z`((^Q5#,LRTM>#?FLG><
M_`G36'0;<:D1R7!^OJV3_:3N=,</KRXP[0E5VAD:E2AV"SNE3KF?>!LX28C?<
M+;X)CK3,ZXYGT1^<=E1]=%E<P\4TE_SH^$`U)JI@&PZ*EF@"C3I10^X!#CR`Y
MK3;6#^K![QB$DNB+-Z"52&7WL6\PE[(XH0QZ$J:9:WF*XLE?(>47[PE]./,"3
M7=%%')BNWBFCHRY6$/HNX-3[`G<6]@_6#VS19"+>G_A/NKH4)MZ?Z$\>:&O`@
M$<`)%2SYY8(LQXK"\MG.+5WX)4*+`G/+H$L89DZI<VS;`XW0CPQ+)4PGYJ]@T
M9&#0]F-N#TD7NQQY.YB/L<5>$9#*%7++.71X[Q*+.O)5;#U8^T0)ARRG30:SH
MS_$CGB8<A.K:DO!&]0KC0_]Z),\/'*CW"FNR8Z`]PTVL7=7DXZ;%X(B7>VDZ2
MS9`\[UJZT%<2S`EI!FHS_W"6[_Y#7_P&P<V9@YLO#S9>%C+93IN=_SQP;P?K6
MQ1[V1Q6%<6+(YON8X"(#+6QH-2U!!```I08``"2.S!H```QZ>F5N9'!A9"YT,
M>'3-408?='>+"-:(Q_O`'H;"KF,P-``-#0``T(G^6]?VXO7G*U\=CF4YAAK7)
MF7^W\>GK]_IZ?U_[OO\>_Y]?G^?[]/K]OY]?3Z_CW]O3?M[_3U]OT_OXZ/Y>)
M_U^7^\GV_S[_/]_M]___KZ?]YXJNKX3*(;L7'[V4ZVO6+U7(4XE.]615),)\O
M=7<#QMXC=C,6MMLN\FBWMGE2$KL6Z%;P0?DXKS/0<G2VH,3WH06V6A`GQ[!6L
M">'27S0WG&VGI%XTRFU*7MINH9B$-IM%:GL3XU(55,5PTF%*\KO3N*(9HE%O#
M.(C8UQF<YS,T..M&I3RN7;,M.0N`U$K'AM08&;\27G!)"AAJ1SJ,K8Q0*NOIC
M5-$E<*,MRD;FH'T*8B+,%:AOUFYLY>V!##"IC8KM1Z2U3QK''I4XK^)I'>]9I
M=/<UUHN[)N*VK8N^<3)50RJ)$RV=:=)X8('8:_B8R<9R%VJOQSPS?,@MGDK%G
ME*$L!+HW>RZ[BTG`7%`!X>N$"R%=M56<9=N4.E7:-511:]S.N;X?L*>`G$R3.
M?DVU:T"%[]4HLF(Q2<0P;]OESA<E3:$$"\6FO5@#;T*@M,ZX7?.#B^G?B$;^4
M+)-*'MR2QIM81Q1TG(<JK;7S!.5&UP.C5$-;8D&-D0$L-,GQJLN:_*(#`-D8:
M6CNU_,QSFV;0I,2>BF1<YM[.-BHP#)8"23Y(I2=O<HO:D>*7F#[]AKVH5>RZ0
M]EVYYA;-]CYI?(<9E&.R%UYD*$0?N11"P"[""HOI)\ON+-JS/&"F^^8IRS,2-
MP[5[EE0.;T56(1&OD76R>6.<N?&4.ZJ'7%%BY<LAJG%O<DY-1-.T6AP7N9L9L
M\/4)!(XR*CA-_$-UG*I[MXB\#"2YKEML:CQG4F3NZ0GU"L+[2)II-2SZPB;:V
M9EB8SQS=74.$E*ZLBQ>V723E*2T>`5K3%0U0-B:PY,YR#N/=G@'3*J=_=M@3C
MK8<+:8?5A=M!;JC.O&:WA+2K,H^5&/JES?***))QT,RLTZQ6MF0',*S37?0'+
MYWE@=K<K9LU59*#IT(@S:^.D-<4,+4</2NMHYH/E@36`*A?:CN+]3Y>&UR%>^
MV]GIG&#X3HG?!9V$SFI/0XJWKYRA7K"1:&X6O-@:=N=[^7;961$TI:IV0F_#4
M.O9(%)VL]-2BG)ZX)K(=JGD;[F;ARU[H=>>;[*V&]5';SZ2!4\?E6L+3DM*J1
M,4/AHD!0FHC.JS[?:%\C.U(91EV4G;-9EB*T;%5>Y$*W>F*D]L^CD9ACR'6]%
MB>N5UT=,R"^M&@>X'](@A\K(FK.XAVOZLP@J5>@XPZH8DX+*Q.BY*^4@/,D=`
M;K\110M5:*KS6&`0=II>G,NJJV[,')UZNLKG#[?68'%W/A>J2![$4H-SU3N=T
M`8=";N,Q'DX/+I3$B2+\?7XQYER^)(V0Z[BTX9%B_<F<E)OMX,VZYOSW'T0N;
.+*'F4E,EKJLR':,>``#\B
``
end
size 23279


From crash!cs.uwa.edu.au!jasonb Sun, 13 Jun 93 01:44:48 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 01:44:48 PST
Received: from cs.uwa.edu.au by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4n7O-0000RIC; Sun, 13 Jun 93 01:08 PDT
Received: from mardo.cs.uwa.oz.au by cs.uwa.edu.au (4.1/SMI-4.0+cs.uwa-1.0)
	id AA17923; Sun, 13 Jun 93 16:05:57 WST
Received: by mardo.cs.uwa.oz.au (4.1/SMI-3.2)
	id AA13542; Sun, 13 Jun 93 16:05:53 WST
Message-Id: <9306130805.AA17923@cs.uwa.edu.au>
Date: Sun, 13 Jun 93 16:05:53 WST
In-Reply-To: <m0o4lTP-0000QhC@crash.cts.com>; from "Barry D. Wills" at Jun 12, 93 9:04 pm
X-Mailer: ELM [version 2.3 PL9]
From: jasonb@cs.uwa.edu.au (Jason S Birch)
To: BWILLS@kirk.safb.af.mil (Barry D. Wills)
Cc: amigae@bkhouse.cts.com
Subject: re:  Modules

> >What I'm interested in, though, is: Is it possible to get a "module
> >listing" for the built-in modules? A while back I tried to use
> 
> You can use the util provided with E called ShowModule.  This gives you .fd
> style listing of the library modules in the root of EMODULES:, and it gives
> you a .h style listing of the definition modules in the subdirectories of
> EMODULES: (they don't closely resemble .fd and .h files:  "kinda like" means
> "that's how you can use them").  You can also look for AmigaEDocs.lha on
> Aminet.  It's an archive of the ShowModule output from all the modules.

Thanks, but what I meant by "built-in" was the libries in ROM that don't
have modules in the root of EMODULES: (eg. intuition, exec, etc).

> >CreateTask() (I don't have any RKM's but I saw the function defined
> >somewhere) but E wouldn't recognise it, and I couldn't find out if
> 
> Sorry, Jason.  CreateTask() is a component of the amiga.lib linker library.
> You can't get there from E unless you create a shared runtime library that
> includes the code, then create an E module for it.  |-(

Oh. That's a real shame. I don't suppose anyone knows how to do this?
I really like the idea of multithreading.

> >Amiga C Manual (aminet:dev/c/ACM.lha) but I couldn't find the
> >definition for JAM1 (the example C program simply included
> >intuition/intuition.h, but the module intuition/intuition.m (or
> >whatever the suffix is, I'm not sure now) didn't mention JAM1).
> 
> These are in graphics/rastport.m, and they go like this:
> RP_JAM1, RP_JAM2, RP_COMPLEMENT, RP_INVERSVID.  A very useful comb for
> finding this things is ShowModule and a search/grep-like utility  |-)

I keep meaning to ftp a grep-like utility :-). I'm forever using it
on the Unix machines. 

> BTW, "Amiga ROM Kernal Reference Manual, Includes and Autodocs" is an
> invaluable reference.  Well, worth 40-50 wombats!  Hope I helped some.  Talk
> to you later.  -- Barry

Yeah, I know, I'll get it one day ;-) Thanks for your help (and sorry
for sending this to you twice - how do I make the reply come directly
to the list and not have to cc it like I did for this one?),
Jason.

-- 
Mr Jason Birch                       _--_|\  Internet: jasonb@cs.uwa.edu.au
Department of Computer Science      /      \ Tel (work): +61 9 380 1840
The University of Western Australia *_.--._/ Fax (work): +61 9 380 1126
Nedlands  W. Australia  6009              v  Tel (home): +61 9 386 8630

From crash!sheffield.ac.uk!D.Lamptey Sun, 13 Jun 93 03:48:30 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 03:48:30 PST
Received: from sun2.nsfnet-relay.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4nqR-0000eEC; Sun, 13 Jun 93 01:55 PDT
Received: from ntsc.shef.ac.uk by pp.shef.ac.uk with SMTP (PP) 
          id <11581-0@pp.shef.ac.uk>; Sun, 13 Jun 1993 09:52:01 +0100
Received: from mars.nattrans.COM by ntsc.shef.ac.uk (4.1/Derryck 1.1(mm)) 
          id AA11903; Sun, 13 Jun 93 09:53:52 BST
Received: by mars.nattrans.COM (4.1/Derryck 1.2(sm)) id AA02009;
          Sun, 13 Jun 93 09:56:35 BST
Via: uk.ac.sheffield; Sun, 13 Jun 1993 09:55:10 +0100
Date: Sun, 13 Jun 93 09:56:35 BST
Message-Id: <9306130856.AA02009@ntsc.shef.ac.uk>
From: D.Lamptey@sheffield.ac.uk
To: amigae@bkhouse.cts.com
Subject: Using Menus.

Hi.

Still rogering on with my proggie. Main question today:

How does one access the return values from the menu selection?
I have noticed they are always the same....

And in a menu item definition,

....2,0,'Menu-text','hotkey',0,0,0,
      ^                      ^ ^ ^ What do the arrowed
items mean?

Before I get replies at derryck@flame_me.ac.uk ;-) 

Can this info be found in the guide? I could not find it.

Derryck.

From crash!kirk.safb.af.mil!BWILLS Sun, 13 Jun 93 07:43:09 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 07:43:09 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4sK5-00003TC; Sun, 13 Jun 93 06:42 PDT
Message-Id: <m0o4sK5-00003TC@crash.cts.com>
Date: 13 Jun 93 08:39:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Modules

Jason, sorry about the internal library misunderstanding.  You may get some use
out of looking in the .fd files your received on your Amiga Extras disk.  These
will give the function names and parameter name.  If you get a PD C compiler you
can refer to the header files and correlate that info to E.  Also, Commodore has
released the Autodocs to Aminet.  Very handy since you can have Autodocs online
and you can grep them :)  -- Barry

From crash!kirk.safb.af.mil!BWILLS Sun, 13 Jun 93 09:42:09 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 09:42:09 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4tiq-000045C; Sun, 13 Jun 93 08:11 PDT
Message-Id: <m0o4tiq-000045C@crash.cts.com>
Date: 13 Jun 93 10:08:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  Uneven OBJECTS

Hi, Son Le.

Hmph.  I see your problem.  I bashed away at it for about a half hour and there
seems to be no elegant solution.  Looks like the cleanest way to load your 
object of arrays is to read the compenents individually.

(for the group:  sorry, I don't have a quote handy.  It went something like this:
  OBJECT phonebook
    name[15]:ARRAY
    address[20]:ARRAY
    postcode:LONG
  ENDOBJECT

The problem is that Read() treats variables of type phonebook as an array of 
characters, while E treats them as objects.  Since the internal representation
is of the object there is some byte padding that you don't see when you access
the components through the object.  This is causing the input data to get chewed
when you say Read (infile, obj, (15+20+4)) )

This sounds like a topic for Wouter |-)  Later.  -- Barry

From crash!cs.uwa.edu.au!jasonb Sun, 13 Jun 93 11:45:14 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 11:45:14 PST
Received: from cs.uwa.edu.au by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4vcD-0000aaC; Sun, 13 Jun 93 10:13 PDT
Received: from mardo.cs.uwa.oz.au by cs.uwa.edu.au (4.1/SMI-4.0+cs.uwa-1.0)
	id AA27948; Mon, 14 Jun 93 01:12:02 WST
Received: by mardo.cs.uwa.oz.au (4.1/SMI-3.2)
	id AA17680; Mon, 14 Jun 93 01:12:01 WST
Message-Id: <9306131712.AA27948@cs.uwa.edu.au>
Date: Mon, 14 Jun 93 1:12:01 WST
In-Reply-To: <m0o4sK5-00003TC@crash.cts.com>; from "Barry D. Wills" at Jun 13, 93 8:39 am
X-Mailer: ELM [version 2.3 PL9]
From: jasonb@cs.uwa.edu.au (Jason S Birch)
To: BWILLS@kirk.safb.af.mil (Barry D. Wills)
Cc: amigae@bkhouse.cts.com
Subject: Re: Modules

> Jason, sorry about the internal library misunderstanding. 

:-) No problem.

> You may get some use out of looking in the .fd files your received on
> your Amiga Extras disk.  These will give the function names and
> parameter name.  If you get a PD C compiler you can refer to the
> header files and correlate that info to E.  Also, Commodore has
> released the Autodocs to Aminet. 

Really? Where? I had a look just now and couldn't find them anywhere.
Which OS revision are they for?

> Very handy since you can have Autodocs online and you can grep them
> :)  -- Barry

:) Ok, ok, while I was looking for the Autodocs I grabbed AGrep204.lha
from os20/util. :)

Cheers,
Jason. 


-- 
Mr Jason Birch                       _--_|\  Internet: jasonb@cs.uwa.edu.au
Department of Computer Science      /      \ Tel (work): +61 9 380 1840
The University of Western Australia *_.--._/ Fax (work): +61 9 380 1126
Nedlands  W. Australia  6009              v  Tel (home): +61 9 386 8630

From crash!kirk.safb.af.mil!BWILLS Sun, 13 Jun 93 11:45:17 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 11:45:17 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4vxi-00000KC; Sun, 13 Jun 93 10:35 PDT
Message-Id: <m0o4vxi-00000KC@crash.cts.com>
Date: 13 Jun 93 12:31:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: KS1.3 DateTime and Arp (!!!)

Here is an improvement over the last DT example I sent.  It uses arp.library
function StamptoStr() to convert the datestamp to strings.  Much nicer.  Thanks
to Son Le for converting the arpbase.i include to a module for me!  If anyone
is interested in acquiring the arp modules let me know.  I poured over the Arp
license agreement and I don't believe it violates the license.  If anyone thinks
it does STOP ME NOW!!!  The modules have *NOT* been tested, so they may be
buggy.  There is a readme file that will accompany the modules, as well as the
(oops, back up 5 words)  that discusses the possible problems with the modules
(which are surprisingly few.)  The original license will be included so that you
can examine it and determine if it has been violated.  Later.

-- Barry

begin 644 DateTime.lha
M'C,M;&@U+94#``"@!0``4&'-&@``"$1A=&54:6UE@V,##FJCVC;47^Z6-81I+
M36F*5QA/[Q-+>FYG6KBBXJG31V*0N_F%J^+)+)K)-$DD[=>ZC008*#X$0<F\[
M*)O%O!BFT*3P4WDQ-MO!D+X)X*)1*%1+X,K`V%HE(=+_]__.O6ZN\SG=I&FW#
M*`7G^!=_)`]^2E"G_@^:OS@_B9<4"90!BJIY1PL("ZAN;(JSG[''*VJ%GZO!0
M]ZP%S;FLIT#6.Q^9=3>_6&O([H5IQ(W]!TQWU7<_N47-LL!&MFN*99OVSK\G7
M1)ZI])>L?^H4VQ&MAVA0^6/;"8QB%U+FP).S/`/YXD.L*&R*&6\A\@H>\*$CX
MR'7%#V55QBWQCMW5))G,Y?/J:$6C0F,RV=(*%-IN@U0J4WD,]F6QU:'4X`5*0
M6UU9TYA[>$L`^V+1,Y(K&W)^&K1-KIJFW,9)H-$]%_T3?CCLGIO"HFM$@S^,H
MG()$';\(IXI(,[SIB3&A<P<_([GK.YV3YPU3;,^"(WZ$XX[_LA*FVR]-VP,K`
MQ2>Q80R7Q6Q@N`,L[96R_&9R3YC;?+&8UE35Q^ZH_=,9SKQK;[DC5'54Z)M,9
M0>Z-88!(&<`7\MG@EA9<'[&*.(#*>QF;3Y*[46XX-Z0#)>*I\]EFHR2HQ-ITG
M*<\G"PR?)[?N\L`6&D=YR)/F%GI-7Q*1G,"KC`Q!.G?=\6;!6RC\9!V[APK5*
M^<'B'!^N@'^7$#LH!X+P.ZQ]'B!UD`\+?!C,KA]<:R2`[*.OF;0/AINNA7[(4
MTE0GN.9FTD-M[FLB9>OP4;^"7I$)[Q.5H03RC=B,F/C`HOO"_TL\[Q]`UJ;PF
MC<'TC<G_AN;0I>@;A>D;`.-$/[3Q'V+M<^I4IZ,UEH]=L\7AH-2Z3$5%;TNX^
M<FB6U;CG#<4#\46+H-$"J2AX*RAX&RC5Q;/78"O6-6&>X!>L._-82=WQ'G[@Y
MR6VB5)Q*4VE49THL%#-"8[$J;P>]/*"P$5-6NR2'OG!GA$>Q/(_^'?40S_Q1]
MPQ#:<&Z?)+\I6QZP[HE\HE0'\>UO!S[8*GZKPZ)K$+UAMG_H]>=TG.D8<X#.5
M?AX8<#XOK51U;'J.WA6"MC#,1.!"'A+>6G5/[CTOW#^`T;W]MCCGZ>DHF\I;#
M,>27FXZV1D+9/,QUO<QUAG-AMH`4%^[X,BP/[ZJ`?3Y_FYD,+T=(8&_Y$SPS0
M=\B\_#(OD1POB5C6L3G#7%<UKI5>E5*VP!6T,^L-(]4X<?"37B4461>LJ+G0Z
M[1C7^R!5+6QH-2VB`0``0P,``%!AS1H```I$871E5&EM92YE"KT!>6.7K3;D<
M/._`'_&`K%-;8KP2Q7@*'XH)`R(";;@J53LCE32@,3':K/'+[`DUNUVV[-=`O
M%::<FGCV2B#T++7L@/<%>3$,4F[Z%`[T7)>,83[)@&CQ/.<<A@=XOV89C&HAE
MDI'']"32%+6*L\P?@#N`\DIC:Z)X@K0JQT/5">.42H,8Z0W-#M#<AJ6JK28H5
MA'GT,M\BN@=O<$]J;);T;Q!]XI&7!-\24V;/!RL+D;0A1$WWA8Q;`61AR$]R<
M0?7-GZ'H"&">.32ZV[FY=ZV5H:ZUZ9Z)H:O&0]6$FYK-R.+I/)H=73![RFI^B
M)?7V?B6YF?TO&1&EJ*[0?O#%\P8O*^,U9#W2W-7IO:?V8IJ2PB]&2(*+X7>%B
MA/GFG(/V%))_P*U/R&J<GOD,Y97X:EI'_9.VKL]4D$)FNJ%Z\R_K)<7!=R>>?
MJ\=AP7R$HLV$]2P*8?O$.MV8*1E&*H$^VU-K5+LOND4.'$AW&30`'GU_F,7%Z
M_1\,B?T:"]X5IK6SCE)FX.@N+$.R6K0&'N8[%X<[EBOL$3AHCEQZJU"?_M$MU
'YE0'<WC``-X5?
``
end
size 1402

From crash!kirk.safb.af.mil!BWILLS Sun, 13 Jun 93 11:45:22 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 11:45:22 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4wBw-00002KC; Sun, 13 Jun 93 10:50 PDT
Message-Id: <m0o4wBw-00002KC@crash.cts.com>
Date: 13 Jun 93 12:47:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  Autodocs online

Hi, Jason.
Could have sworn I saw them out there somewhere.  Maybe it was on a BBS.  I
don't have them, so I can't say what revision they cover.  I'll keep an extra
eye out for them, though.  They *MUST* be out there somewhere:  there is a tool
on Aminet called AD2HT which converts Autodocs to Amigaguide, and Commodore
included it in their distribution of Amigaguide (which is also on Aminet), along
with an Autodocs setup directory.  In the Amigaguide Autodocs directory is
mention of V1.0 CATS CD.  I guess it's a compact disk with the stuff already on
it.  Don't know how to contact those people, though.  (Anybody with info about
CATS or Autodocs, please post it!)  Lets keep each other posted, Autodocs on
Amigaguide has really got me interested now :)  Later.  -- Barry

From crash!MSUVX1.MEMST.EDU!UMLANGSTON Sun, 13 Jun 93 13:59:06 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 13:59:06 PST
Received: from msuvx1.memst.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o4y1E-000008C; Sun, 13 Jun 93 12:47 PDT
Received: from MSUVX1.MEMST.EDU by MSUVX1.MEMST.EDU (PMDF #3869 ) id
 <01GZC0AK0P68AC52UA@MSUVX1.MEMST.EDU>; Sun, 13 Jun 1993 14:49:34 CST
Date: 13 Jun 1993 14:49:34 -0600 (CST)
Message-id: <01GZC0AK0P6AAC52UA@MSUVX1.MEMST.EDU>
X-VMS-To: IN%"amigae@bkhouse.cts.com"
MIME-version: 1.0
Content-type: TEXT/PLAIN; CHARSET=US-ASCII
Content-transfer-encoding: 7BIT
From: UMLANGSTON@MSUVX1.MEMST.EDU
To: amigae@bkhouse.cts.com
Subject: Updating gadgets


  Well, I've been digging around my Libs RKRM (and realizing just how poorly
it's organized), trying to figure something out.

Get this:
  I opened up a custom window, and throw up a few gadgets using gadtools.
The buttons types work fine.  However, I threw up a text (read-only) display
gadget, empty to begin with.  I want to send changing values to this gadget,
but the function call to do this (I cant remember the name, something like
Gt_SetGadgetPtrsA ...not too sure about the last 5 char's...sorry), just
won't work.  I set the initial text flag for the gadget to NIL, but later,
in Main(), as long as the window wasn't closed (only msg I'm checking for
right now), I tried to have it increment a counter and display it there by
changing that flag.  The RKRM says that this should be all that's necessary,
that I shouldn't have to do a refresh on the gadgets.
  I'm perprexed.  By the way, the parameters for that function was a pointer
to the gadget structure (I called mine text1), a pointer to the window 
containing that gadget, another unused pointer the RKRM says you can set to
NIL, and then the flags for the gadget you want to change, either as a pointer
to the new structure or as a TagList, which is what I did...no dice, however.

I'm at work right now, so I don't have the code handy, but if I remember 
tonite, I'll stick it on a disk and post it tomorrow after, if no one has
solved this by then.

I'm gonna try it with some of the button gadgets, see if I can ghost them...
perhaps I'm misusing the function.  If that doesn't work either, I may get
quite down.

harried,
-mark

From nkraft Sun, 13 Jun 93 17:20:49 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 17:20:49 PST
Date: Sun, 13 Jun 93 17:20:49 PST
Message-Id: <9306140120.AA00frd@bkhouse.cts.com>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: crash!amigae-transport
Subject: Test



TESTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT


----------------------------------------------------------------------------
Norman Kraft                            INET  : nkraft@ucsd.edu (work)
Peptide-T Clinical Trial                or try: nkraft@bkhouse.cts.com (home)
HIV Neurobehavioral Research Center     UUCP  : ucsd!nkraft
Dept of Psychiatry, School of Medicine  
University of California, San Diego          Usual disclaimers...
----------------------------------------------------------------------------

From crash!minyos.xx.rmit.OZ.AU!s924723 Sun, 13 Jun 93 19:46:49 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 19:46:49 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o52lI-0000OtC; Sun, 13 Jun 93 17:51 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA16940
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Mon, 14 Jun 1993 10:50:55 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306140050.10592@minyos.xx.rmit.oz.au>
Date: Mon, 14 Jun 1993 10:50:57 +1000 (EST)
In-Reply-To: <9306130622.14956@minyos.xx.rmit.oz.au> from "Barry D. Wills" at Jun 13, 93 00:28:00 am
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 2801
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: BWILLS@kirk.safb.af.mil (Barry D. Wills)
Cc: amigae@bkhouse.cts.com
Subject: Re: arp conversion

> 
> Got your conversion ok.  Thanks!  No need to apologize.  I didn't know what to
> do with all those STRUCTURE statements and Amiga types APTR, UWORD, etc.  A68k
> wouldn't take some, PhxAss wouldn't take the others.  I'll give it a shot and
> see what happens.  If the PatternMatch() function works, I'll say it was worth
> it.  Just for grins, what did you do to the .i file to get it to compile?  Did
> Devpac accept it without much complaint or did it involve some rearranging?

Don't know, used A68k (; - Thought it would be best to use what Wouter uses.
And yes, lotsa modifications, that's why I'm unsure about those structures
(they were the modified ones). Basicly, iconvert doesn't understand LIBSKP,
so they were removed (no harm done and I think iconvert skips over LIBENT too)
and I had to hack the UNION structure to be on it's on (iconvert can't process
them either) and that's it.

> While I'm replying I'll include some stuff about epp014.  I tried it out and 
> didn't notice much diff. Before you panic let me say that was on my '030.  But
> when I booted with the 68000 I saw a tremendous difference. I measured about a
> 25% increase in speed.  Good job!  One thing that did the opposite of what I
> expected is that I thought if I added open*Count and tested for 0 it would be
> faster than saying IF (oStrCnt = 0) AND (oCharCnt = 0)...  Not so.Evidently
> Wouter uses something special in there.

(; On a '030 I don't think you'd notice anything much (;
As for the adding check, I was uncertain, but it sure look good. I think I
could push it to maybe half speed, but then your code would have been hack
to beyond recognition/understanding (;

> Did you distribute epp014 yet? I'm thinking about stripping comments to speed
> it up.If 0.14 is out then I'll start working on 0.15b (which I *may* just make
> 1.0 (no longer beta).  If you haven't distributed it, I'm thinking maybe I 
> should release it now .vs. in a few days to a week. Most programmers out there
> don't extensively comment their code anyway |-) HOWEVER, the comments that epp
> inserts in the final output eats a little time.  What say you?

Firstly, no I didn't release it, thought I'd mail you my changes and perhaps
wait for you to "officially" release it. Stripping comments would spped it up,
by how much I don't know.. but I think's best to leave them in. It's best if
you knew what came from where... maybe two version.. nice coding and speed
demon?

Btw: if I've not already mentioned, I've got all your link examples, but still
haven't had time to look at them closely. I think I must query is when you
ListAdd to a dynamically allocated List(5), wouldn't Adding add another List
so List=6.. can't you start with 1 List and Add?

Bye!
Son Le (called me anything you like, or God if you prefer :)

From crash!mars.let.uva.nl!wouter Sun, 13 Jun 93 19:46:55 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 19:46:55 PST
Received: from mars.let.uva.nl by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o52sq-0000IeC; Sun, 13 Jun 93 17:58 PDT
Received: by mars.let.uva.nl id AA13624
  (5.65c/IDA-1.4.4 for amigae@bkhouse.cts.com); Mon, 14 Jun 1993 03:01:52 +0200
Return-Path: <wouter@mars.let.uva.nl>
Date: Mon, 14 Jun 1993 03:01:52 +0200
Message-Id: <199306140101.AA13624@mars.let.uva.nl>
X-Organisation: Department of Computational Linguistics,
                University of Amsterdam
                Spuistraat 134, 1012 VB Amsterdam, The Netherlands
From: Wouter van Oortmerssen <wouter@mars.let.uva.nl>
To: amigae@bkhouse.cts.com
Subject: E and the rest of the world ...

Hello all,
 
In some articles for this list I'd like to address some common
problems that people might have with E, for example working with
OBJECTs. Now I will discuss E in general with repect to C, for
people translating sources.
 
have fun with it,
 
Wouter.
 
 
-----------------------------------------------------------------------
 
               Amiga E in terms of C/C++/Pascal etc.
 
This document is intended as yet another way to understand E, especially
for those who already know another language, like C, and it may also be
a guide for people translating to/from E.
I personally always find it enlightening to see constructs of the
language I'm learning as equivalent in a language I know already, and
I know others do too.
 
In the first/second column I will match E against AnsiC/C++, the third
column is reserved for a third language. I will mainly use Pascal here,
but where a feature asks for it, I will use others (for example, LISP
with quoted expression, Ada with exceptions etc.
 
note well: take these tables with a grain of salt. I'll try to denote
syntactic equivalences, and semantic properties as well as possible,
but different languages still need their own evaluation.
 
if you see errors in the translation, please let me know (especially
my Pascal knowledge is somewhat rusty).
 
usage of signs:
 
-	= feature not available in language in question.
?	= author has no clue what this feature translates to.
	  (or atleast he's not sure).
...	= feature may be available, but no appropriate 1:1 translation
	  possible to make it interesting.
x,y,z	= arbitrary identifiers
e,f,g	= arbitrary expressions
s,t,u	= arbitrary statements
i,j,k	= arbitrary integers
etc.
 
 
-----------------------------------------------------------------------
STRUCTURE/STATEMENTS
 
E			C/C++			Pascal
----------------------- ----------------------- -----------------------
PROC x()		int x() {		FUNCTION x:INTEGER;
PROC x(y,z)		int x(y,z) {		FUNCTION x(y,z:INTEGER):INTEGER;
ENDPROC			return 0; };		x:=0; END;
ENDPROC e		return e; };		x:=e; END;
RETURN e		return e;		?
 
IF e			if(e) {			IF e THEN BEGIN
ELSEIF e		} else if(e) {		END ELSE IF e THEN BEGIN
ELSE			} else {		END ELSE BEGIN
ENDIF			};			END;
IF e THEN s		if(e) s;		IF e THEN s;
IF e THEN s ELSE t	if(e) s else t;		IF e THEN s ELSE t;
 
FOR x:=e TO f		- (1)			FOR x:=e TO f DO BEGIN
FOR x:=e TO f STEP i	-			- (2)
ENDFOR			-			END;
FOR x:=e TO f DO s	-			FOR x:=e TO f DO s;
 
WHILE e			while(e) {		WHILE e DO BEGIN
ENDWHILE		};			END;
WHILE e DO s		while(e) s;		WHILE e DO s;
 
s; WHILE e		for(s;e;u) {		s; WHILE e DO BEGIN
  t; u			  t;			  t; u
ENDWHILE		};			END;
 
REPEAT			do {			REPEAT
UNTIL e			} while(!e);		UNTIL e;
 
LOOP			for(;;) {		WHILE TRUE DO BEGIN (?)
ENDLOOP			};			END;
 
INC x			x++;			x:=x+1;
DEC x			x--;			x:=x-1;
JUMP lab		goto lab;		GOTO lab;
x:=e			x=e;			x:=e;
 
(1) see WHILE; C has no FOR, "for" in C is another way of writing "while"
(2) only STEP -1 as DOWNTO
 
 
-----------------------------------------------------------------------
VALUES
 
E			C/C++			Pascal
----------------------- ----------------------- -----------------------
1			1			1
1.0			1.0			1.0
$1			0x1			?
%1			?			?
"a"			'a'			chr(97) (?)
'blabla'		"blabla"		'blabla'
[1,2,3]			- (1)			-
[1,2,3]:INT		-			-
 
(1) in translating from E to C, you can often simulate them with:
 
myfunc([1,2,3])
 
becomes:
 
int dummy [] = {1,2,3};
myfunc(dummy);
 
 
-----------------------------------------------------------------------
OPERATORS
 
E			C/C++			Pascal
----------------------- ----------------------- -----------------------
+ - * /			+ - * /			+ - * DIV
= <> > < >= <=		== != > < >= <=		= <> > < >= <=
AND OR	(log)		&& ||			and or
AND OR	(bit)		& |			?
SIZEOF x		sizeof(x)		-
`e			-			- (1)
^x			*x			...
{x}			&x			...
x++			x++			-
x--			--x			-
-x			-x			-x
IF e THEN f ELSE g	e ? f : g		-
x.y			x->y    x.y		x^.y    x.y
a:=x.y; a.z		x->y->z x.y.z		x^.y^.z x.y.z
x:=e			x=e			-
e BUT f			(e,f)			-
x[]			x[0] *x (2)		x[0]
x[1]			x[1]			x[1]
x[1].y			x[1]->y			x[1]^.y
x[]++			*x++			-
x[1].y++		*(x+1)++		-
 
(1) see QUOTED EXPRESSIONS
(2) also for others, equivalences between *(x+e) and x[e] hold.
 
 
-----------------------------------------------------------------------
CONSTANTS/TYPES
 
E			C/C++			Pascal
----------------------- ----------------------- -----------------------
CONST X=1		#define X 1		CONST X=1;
			const int X=1;
ENUM X,Y,Z		#define X 0 (etc.)	TYPE x=(X,Y,Z);
			enum x{X,Y,Z};
SET X,Y,Z		-			TYPE x=SET OF (X,Y,Z);
 
DEF						VAR
x			int x; (or: long x;)	x:INTEGER;
x:LONG			int x;			x:INTEGER;
x:PTR TO y		struct y* x;		x:^y;
x:y			struct y x;		x:y;
x[10]:ARRAY OF y	struct y x[10];		x:ARRAY [0..9] OF y;
x[10]:STRING		- (1)			x:STRING[10]; (2)
x[10]:LIST		- (1)			- (1)
 
OBJECT x		struct x {	(3)	TYPE x = RECORD
  y:CHAR,z:INT		  char y; short z;	  y:CHAR; z:INTEGER;
ENDOBJECT		};			END;
 
(1) when translating from E to C, simulate with an array of char/int resp.,
    and do your own range-checking etc.
(2) no Wirth Pascal, but available in all popular dialects.
(3) or public class ofcourse...
 
 
-----------------------------------------------------------------------
QUOTED EXPRESSIONS
 
E			LISP			    MIRANDA
----------------------- --------------------------- -------------------
`e			(QUOTE e)  'e		    ?
			(LAMBDA () e)     (1)
`x+y			'(+ x y)
Eval(`e)		(EVAL `e)
ForAll(v,l,`e)		- (2)
MapList(v,l,l,`e)	(MAPCAR (LAMBDA (V) E) L)   map (\v->e) l
 
example:
 
E:		MapList({x},[1,2,3,4],a,`x*x)
MIRANDA:	map (\x->x*x) [1,2,3,4]
LISP:		(MAPCAR (LAMBDA (X) (* X X) `(1 2 3 4))
 
(1) really QUOTE, but sometimes used where in LISP LAMBDA would be
    used, like in MapList()
(2) not even in ProLog, see other logical languages.
 
 
-----------------------------------------------------------------------
EXCEPTIONS
 
E			C++			ADA
----------------------- ----------------------- -----------------------
PROC x() HANDLE		int x() { try {		function x is begin
EXCEPT			} catch (exc) {   (1)	exception
ENDPROC			}};			end x;
 
Raise(e)		throw e;		raise e;
RAISE "MEM" IF New()=0	-			- (2)
 
 
(1) catch handles only one specific exception, it's quite different
    from general exception handlers as used in E.
(2) the runtime system does raise some exceptions, but I'm not sure
    wether automatically raised exceptions can be defined in Ada.
 
 
-----------------------------------------------------------------------
BUILTIN FUNCTIONS
(only a few are presented here, as an example)
 
E			C/C++			Pascal
----------------------- ----------------------- -----------------------
WriteF(fs,...)		printf(fs,...);		WriteLn(a,b,...);
			cout << a << b ... ;
 
ReadStr(f,s)		scanf(fs,...)		ReadLn(s)
Val(s,n)					?
			cin >> s;
 
StrCopy(s,s,n)	(1)	strcpy(s,s)		s:=s;
 
p:=New(e)		p=malloc(e);		New(p);
			p=new type;
Dispose(p)		free(p);		Dispose(p);
			delete p;
 
Mod(e,e)		e%e			e MOD e
Shl(e,n)		e<<n			-
Long(e)			-			-
 
(1) when translating from C, make sure you turn the arrays of char into
    proper STRINGs.
 
 
-------------------------------EOF--------------------------------------

From crash!minyos.xx.rmit.OZ.AU!s924723 Sun, 13 Jun 93 19:47:01 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 19:47:01 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o53DX-0000M0C; Sun, 13 Jun 93 18:20 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA17063
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Mon, 14 Jun 1993 11:20:05 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306140120.11165@minyos.xx.rmit.oz.au>
Date: Mon, 14 Jun 1993 11:20:08 +1000 (EST)
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 1359
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Reply to various things


To james,

Firstly, I'm not sure if the SIZEOF drawinfo=NONE!! would affect it but I
modified mine *grin* and if you want it, I'm email it. The problem I think
is that you haven't DEFined pens to be (PTR) ARRAY OF *INT*. I tried your
example and it worked fine.

To Barry and others,

I understand {var} and ^var for variables containing numbers, but if the
variable contained a string, passing it as {var}, you can't access it as ^var
but just var (if I remember correctly). However, you can't modify the var
(eg. var:='Hello') but must set x:=^var, then x:='Hello' will return the new
var when you get back (I'm not too certain about what I've just wrote, like
I said to Barry, I'm shaky about passing {var}). This is roughly the case
with numbers and strings.. (anybody, correct me if I'm wrong!) but what
about Lists and Linked lists? How do you access them and how do you change
them permanently? And how about when var=New()?

Oops.. mistake already. x:=^var, x:='Hello', ^var:=x. Why didn't I do
^var:='Hello'? Good question! I forgot! Can you WriteF('\s',^var)? There's
a reason why I do it the former way.. that's how I currently do it, just
forgot why?

Hint (actually more of a warning): If you're using SELECT..CASE make sure
all your IFs have a matching ENDIF (THEN) coz at compile time, EC would
say incoherent program, it gurus!

Bye!
Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Sun, 13 Jun 93 19:47:15 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 19:47:15 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o547K-00008YC; Sun, 13 Jun 93 19:17 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA17306
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Mon, 14 Jun 1993 12:17:44 +1000
Received: by minyos.xx.rmit.oz.au
Date: Mon, 14 Jun 93 12:17:48 EST
Message-Id: <9306140217.12731@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


Here's a timer program for those who want to see which part of their program
is taking up the most time. It's not meant to be used for accuracy as it isn't
but it does give you a good idea as to what your program is spending most of
it's time doing. If you make lots of etime() and eend() calls, be prepared for
a real program slowdown... :(

Usage is pretty straightforward.. see main(). Oh yeah, 2.0 only. Time to
upgrade people.. (;

eg. Compiling epp014b.e using epp014b (both are my modified version, on 68000)

Functions numbered according to the order in which the appear in source,
skipping validStartOfToken. (eg. Function 10 = getModule())

Function 11: (Visits      1)  secs   8  msecs 316  micros  52
Function  8: (Visits     25)  secs  46  msecs 377  micros 100
Function  4: (Visits      8)  secs   0  msecs   9  micros 933
Function  3: (Visits    207)  secs   0  msecs 262  micros 522
Function  7: (Visits   1042)  secs   4  msecs 400  micros  59
Function  5: (Visits  27911)  secs   8  msecs 163  micros  20
Function  6: (Visits   1028)  secs   6  msecs 741  micros 421
Function  2: (Visits      9)  secs   0  msecs   4  micros 329
Function 10: (Visits      9)  secs  54  msecs 145  micros 372
Function  1: (Visits      2)  secs   0  msecs   0  micros 789
Function  0: (Visits      1)  secs   0  msecs   4  micros 936

Order of functions called = bottom to top. (yep, getModule()and copyProc() are
the time hoggers.. look at getModule() .. only 9 calls too!)


--- CUT HERE ---

/*
  ETimer by Son Le  (28.05.93)
    based on CTimer2 by Chas A. Wyndham
*/

MODULE 'Timer', 'devices/timer', 'exec/io'

OBJECT erecord
  idnumber:LONG
  visits:LONG
  start:LONG
  elapse:LONG
ENDOBJECT

DEF  etimerequest:PTR TO timerequest,eclock:PTR TO eclockval,
  echeck:PTR TO erecord, estore:PTR TO erecord, eclockstatus=TRUE

PROC einit()
DEF  newdevice:PTR TO io
  eclockstatus:=1
  IF (etimerequest:=New(SIZEOF timerequest)) OR (eclock:=New(SIZEOF eclockval))
    IF (eclockstatus:=OpenDevice('timer.device',UNIT_ECLOCK,etimerequest,0))=FALSE
      newdevice:=etimerequest.io
      timerbase:=newdevice.device
    ENDIF
  ENDIF
ENDPROC

PROC etime(id)
  IF (eclockstatus) THEN einit()
  IF (eclockstatus=1) THEN RETURN (FALSE)  /* error?!! */
  echeck:=estore
  WHILE ((echeck) AND (echeck.idnumber<>id)) DO echeck:=Next(echeck)
  IF (echeck=NIL)
    IF (echeck:=String(SIZEOF erecord))=NIL
      eclockstatus:=1
      RETURN
    ENDIF
    echeck.idnumber:=id
    estore:=Link(echeck,estore)
  ENDIF
  echeck.visits:=echeck.visits+1
    ReadEClock(eclock)
  echeck.start:=eclock.lo
ENDPROC

PROC eend(id)
  IF (eclockstatus=FALSE)
    ReadEClock(eclock)
    echeck:=estore
    WHILE ((echeck) AND (echeck.idnumber<>id)) DO echeck:=Next(echeck)
    IF (echeck) THEN echeck.elapse:=echeck.elapse+(eclock.lo-echeck.start)
  ENDIF
ENDPROC

PROC ereport()
DEF  temp, freq, micros, msecs, secs, echeck:PTR TO erecord
  IF (eclockstatus=FALSE)
    freq:=ReadEClock(eclock)
    echeck:=estore
    REPEAT
      temp:=SpDiv(SpDiv(1000000.0,SpFlt(freq)),SpFlt(echeck.elapse))
      secs:=SpFix(SpDiv(1000000.0,temp))
      temp:=SpSub(SpMul(1000000.0,SpFlt(secs)),temp)
      msecs:=SpFix(SpDiv(1000.0,temp))
      micros:=SpFix(SpSub(SpMul(1000.0,SpFlt(msecs)),temp))
      WriteF('Function \d[2]: (Visits \d[6])  secs \d[3]  msecs \d[3]  micros \d[3]\n',
          echeck.idnumber, echeck.visits,  secs, msecs, micros)
    UNTIL (echeck:=Next(echeck))=NIL
  ENDIF
  CloseDevice(etimerequest)
  DisposeLink(estore)
  Dispose(eclock)
  eclockstatus:=TRUE
  estore:=echeck:=NIL
ENDPROC

PROC main()
DEF x
  /* no need to call einit() - etime() does that automatically */
  etime(0)
  etime(1)
  eend(1)
  eend(0)

  etime(2)
  FOR x:=1 TO 1000
    etime(3)
    eend(3)
  ENDFOR
  eend(2)

  /* must call ereport() to see result, and close/cleanup after etime() */
  ereport()
ENDPROC

From crash!kirk.safb.af.mil!BWILLS Sun, 13 Jun 93 21:46:55 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 13 Jun 93 21:46:55 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o54b2-0000PPC; Sun, 13 Jun 93 19:48 PDT
Message-Id: <m0o54b2-0000PPC@crash.cts.com>
Date: 13 Jun 93 21:45:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Fill V1.0

Fill V1.0 is out on the net!  You asked for it, you got it!  New command-line
arg lets you specify a source dev:dir/filepattern.  Thanks to Son Le for hacking
up the arp includes (yes, Wouter there *are* some useful things in arp,
especially when you're stuck with KS1.3 :-)  Fill uses arp pattern matching,
for all you guys and gals out there who care.  Enjoy!  (P.S. - Fill still
doesn't do directories.  I don't need them (yet), and I won't commit to a
solution until I get a consensus on how you want it :)  Later.

-- Barry

From crash!kksys.mn.org!hotline!chucks Mon, 14 Jun 93 07:50:18 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 07:50:18 PST
Received: from uum1.mn.org by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5Ett-0000JtC; Mon, 14 Jun 93 06:48 PDT
Received: from kksys.mn.org by uum1.mn.org with bsmtp
	(Smail3.1.28.1 #3) id m0o5EjO-0001SpC; Mon, 14 Jun 93 08:37 CDT
Received: from hotline by kksys.mn.org with uucp
	(Smail3.1.28.1 #13) id m0o5Ee5-0003W3C; Mon, 14 Jun 93 08:32 CDT
Received: by hotline.mn.org (V1.16/Amiga)
	id AA000c8; Mon, 14 Jun 93 07:09:36 CDT
Date: Mon, 14 Jun 93 07:09:36 CDT
Message-Id: <9306141209.AA000c7@hotline.mn.org>
From: chucks@hotline.mn.org (Erik Funkenbusch)
To: amigae@bkhouse.cts.com
Subject: Re: Reply to various things

In Email on Mon 14-Jun-1993 6:50am, s924723@minyos.xx.rmit.OZ.AU (Son Huu Le) w
>Firstly, I'm not sure if the SIZEOF drawinfo=NONE!! would affect it but I
>modified mine *grin* and if you want it, I'm email it. The problem I think
>


The SIZEOF drawinfo=NONE!! is there for a purpose.  There are several 
structures in the Amiga's system which are actually larger than what they are 
defined as.  The reason is that many of the hidden variables are system 
private.

Commodore doesn't want people relying on the size of the structure, since 
this can cause compatibility problems.

A good example of this is the NewWindow structure.  When 2.0 came around and 
they needed to extend the structure, they found that many programmers had 
specifically assumed NewWindows size would not change.

DrawInfo is one of these structures that you should never rely on the sizeof 
it.  So, changing this field will reduce compatibility with future versions 
of the OS.


.----------------------------------------------------------------------------.
/ Erik Funkenbusch      / Programmer at large, Employment options welcome,   /
/ chucks@hotline.mn.org / Inquire within.                                    /
`----------------------------------------------------------------------------'

From crash!kirk.safb.af.mil!BWILLS Mon, 14 Jun 93 09:51:09 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 09:51:09 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5Fru-0000R4C; Mon, 14 Jun 93 07:50 PDT
Message-Id: <m0o5Fru-0000R4C@crash.cts.com>
Date: 14 Jun 93 09:47:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Reply to reply to various things (or, pointer to pointer to string?)

Hi, Son Le.  On 13 Jun you wrote:

>Firstly, I'm not sure if the SIZEOF drawinfo=NONE!! would affect it but I
>modified mine *grin* and if you want it, I'm email it. The problem I think
>is that you haven't DEFined pens to be (PTR) ARRAY OF *INT*. I tried your
>example and it worked fine.

Son Le, the arpbase.m module also had one of these SIZEOF...NONE!! objects.
If you check the asm source it might shed some light.

>I understand {var} and ^var for variables containing numbers, but if the
>variable contained a string, passing it as {var}, you can't access it as ^var

This is true.  E treats complex vars (STRING, LIST, OBJECT) as pointers.  So
since your STRING variable is already a pointer to a string you don't want to
say func(^myString).  That's like saying WriteF('\s', ^myString).  This may be
somewhat arcane since WriteF() and the other string functions *expect* to get a
pointer to a string (likewise for list functions.)

>but just var (if I remember correctly). However, you can't modify the var

Also true.  You can successfully use string/list functions on the parameter,
but if you want to change the address of the string variable you must pass the
variable by reference.  Given:
PROC newString (str, size)
  ^str := String (size)
ENDPROC
...
  DEF s = NIL
  newString ({s}, 5)  /* s now points to a valid dyn-alloc'ed string. */
  newString (s, 5)    /* s is not changed!!!  newString() attempts to */
                      /* dereference NIL (^NIL).  Not sure what this'll do. */
                      /* If it's not initialized to NIL, only God knows     */
                      /* where you'll be storing the address for that new   */
                      /* string!!!                                          */

>about Lists and Linked lists? How do you access them and how do you change
>them permanently? And how about when var=New()?

Same deal.

>^var:='Hello'? Good question! I forgot! Can you WriteF('\s',^var)? There's

Sure.  Just make sure that the location pointed to by var contains the address
of a valid E string :)  Kinda like:  LONG-> PTR TO STR-> 'blabla'.  If that
makes any sense.

Later.  -- Barry

From crash!mips.ccc.nottingham.ac.uk!pmygby Mon, 14 Jun 93 09:51:22 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 09:51:22 PST
Received: from jess.ccc.nottingham.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5GHF-0000SXC; Mon, 14 Jun 93 08:16 PDT
Received: from mips.ccc.nottingham.ac.uk by jess.ccc.nottingham.ac.uk 
          with SMTP (PP) id <22419-0@jess.ccc.nottingham.ac.uk>;
          Mon, 14 Jun 1993 16:15:13 +0100
Message-Id: <m0o5GHF-0000SXC@crash.cts.com>
Date: Mon, 14 Jun 1993 16:15:07 +0100
From: "D.Parr" <pmygby@mips.ccc.nottingham.ac.uk>
To: amigae@bkhouse.cts.com
Subject: mailing list


Please remoive me from this mailing list!!!
my filestore cant handle the daily traffic!!

From crash!gdwest.gd.com!kcross Mon, 14 Jun 93 15:50:57 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 15:50:57 PST
Received: from gdwest.gd.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5MKs-0000ATC; Mon, 14 Jun 93 14:45 PDT
Received: by gdwest.gd.com (4.1/SMI-4.1)
	id AA24741; Mon, 14 Jun 93 14:43:39 PDT
Date: Mon, 14 Jun 93 14:43:39 PDT
Message-Id: <9306142143.AA24741@gdwest.gd.com>
From: kcross@gdwest.gd.com (Kent G Cross)
To: amigae@bkhouse.cts.com
Subject: 

Please remove me from your mailing list. The
amount of mailis too great...
Thanks, Kent

From crash!kirk.safb.af.mil!BWILLS Mon, 14 Jun 93 17:57:08 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 17:57:08 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5OuR-0000mnC; Mon, 14 Jun 93 17:29 PDT
Message-Id: <m0o5OuR-0000mnC@crash.cts.com>
Date: 14 Jun 93 19:26:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: EPP V1.0 - with Turbo mode (!)

This is *IT*, don't cha know!  EPP V1.0 with Turbo mode.  Now processed EPP.e
in half the time.  This uue contains the preprocessed source and manual only.
Just compile it.  If you want the full archive, look on Aminet, or send email
request to me.  Please don't ditribute this uue.  It's intended for Amiga E
mailing list subscribers only.  Enjoy!  -- Barry

begin 644 epp10source.lha
M)80M;&@U+8(7``#".```;Y;.&@``#T504&UA:6Q<15!0+F1O8_]F$$A[FNZQY
MMQNHXY^`/F^P$D@26DGSZ/EP8Z%)%-F<DBH24W>O"#AIW?$GT6G=-WVZBS!1X
M/@;,6"Y$P+\,/W[_[WM)*3;;[N'64"W%N#<28%N;`(!;.]^_?=K&VT_1_7^L`
M6%?G_7>OK5Z^&WP6Q^2NNA>BB>-;6ST6_#T^6?1JH9ES4J_CP_3]/E5R144:,
ME>QDLK1[5R652?:U5"VKH[ER6[%BQ_90['->PXL%[D[,5Z_U6['[]G\4KQ9F.
M-4$^DJCI5GBU*QK5DH6N74J1C::&8ZJ5R*JFD70JG,/LGEEGTLFRE,Q]\=+)R
MYF\:,LX;9Y!:HY\^B5=)_":E<P5^?(GN3A;F312JBHCS,[EJSU-I'$9XF3*9M
M-3%'2C0>)_$5^?GBI70Q/PU#R%33JTN2S//(S(P,Y5NX5K5UV\*HJ4ZQ<TD'M
M&IWP6B2>.K.$0"BT*7[0C=413^OP!TN>WO'UO+;^3')IZ3V>UC)XD>%D927H[
MCP<Z)A&'\ADD$`R!&AQ<55.8*G^X>ONGV(YPOP[N"O#P9I%-S,T:"V$_IF'^+
M)=G$EK<5$6.5:J9PF@6R/-%1E')8]2N>@?[YV-S.43Y[9B#SYUT1EGE:;[5R)
M@K^E@1NH?[H92&,*T!A3&M'E5J)1/G1K+E&*H!1,;))%S&+BQV8;JK_.K%ZKR
MV%77@O\W9RXO"''_F'BIO_<-75/-:CUJZ/=^"J%(A&:?G<R6N%[E_X]C^;#:)
MV#08M^##7J^R:.6J1;0]**A>D?_MPA;]4\T[GC&)"MR%;7"_NMCQDE#'W\=(^
M9`=B`1RL,:<(W'1H[LW@QT\?*R-<P;'L^?7!/^<=B.4,5F>(>^R>HJL9U4?DA
M*+O+T7+W3=P;7T_!\#OR[F%/(-:BFU"<2BB*:G59$QN@/E%"D-)%#U)T30#/@
M%!`J/@Z&)K0MP;I4:HRVZ!`VS&R5E.I$N//219XLJS]M4M+Y1*XQ2_8,5\A5#
MIC?E`(BP<M_JQ7>K%AUJ]6KD*8C0ITLB4[(G.9V1=9&2K?%FZQO7_6E7?:N.0
MJE(!/7P6^'AQVZ_&MAYL/&UV10Y(/"[X&V3!;,[WYHGI['>V<2O7V!Z7RXU-@
MGJHC7L\(>M3.+3(\+`ON8D<S_CAXOMB-=/A?Q',RA<:>D]=74K@\5/&1:`D/C
M[5OKH5\!Q?^<`::H\NW3[:3P&$224GPLM$6=0ECCH9H+!7^=@7%)G7]_.R@2#
M=VE>E=)@`4VF*BDW9T\3K%CVH.?\F^B*0[RA<4MK3/0'J/\#^]Y?V>JYBW,**
MNJ[[/KVR<V@M)BA+JOGQV5:<S(\PDG:J9?<)!MEGMT*N!>><`.4AV#'Q]H::]
M;N4PGOF6J5<V6G,JUW-M*QU9,@X-HM`FU;D%G44/9VI+*5]%KM(23##GJ'<4O
MT&V,;-6,,5[5,ILJO!MT:3E'LVQ9%Y:HJ)"DDVY2>*F60AT0@]2<.A+?DT^EL
M40EJ'_59S+7Q<%K'J`"4Q8/1I]P!(GSQ!4%ME/DZKZNFY_A>Z>SI5T7NF]B'5
M-89U,R*U3U*RSNOYX+G392=AE/B4KCM;UBN:T4:IG0`@+\8!YI&\:N]D<*L\1
MIL4@!_/5E#`9SP449J9SR"]0G42SS91:4=[P4M\J2E7L@61/E'9M%,@,PB5VI
MKU"$^04W4XQ25@#6S7*&'HX9*(9!H"S,N1RYA6J'\TH5,M%4+E1X6/,O2E27\
MCM;J+-V:"CTCJ8>>(`VY5;L6,U:Z69UAB'^;V(;Z?\KJ7I40O8L.R2&K[;?]+
M2>)RST&:,\A/VFX%%0:PX@*'S3Y9A"(;\O*HAO=W>'M@83W&Q`!'C!<Z149Y<
MI=1XWY>FI/4YF2"#44Q^X-/9E"@V1`9376)QBH^%RE"#B.=&?B-^=4X<,*\HV
MB5:D,L4W:THYA$7W0M+`61DTB1>GBIYE^(*O:?*\!WKI/RP3%51CG4T6F1'EP
MNVJ=X\0+0PM9".#0LAK_%XO$ERO?/\K#=NC__*1JBA_[Q]C19H\:N>_@`@3FO
MNX>7!>ZW#<1_8+OZ^R]@N]/A9'A9+N3*N9PO"7&"*\E"I4JX>E>4PLB-(PK`X
M00$+I#(PAAJ.L%NZ1(>T?$>)_1YN#['0</J?&84@+J6KER.Y^B<V_@MFA`1I9
M]:_D,/H>Y924O29'P*+G$XP]SV#G`VCN%9R^*N0`;CDYMQKTTNJ]?%;?:YW>-
MJ_BN\:2/P^PBKA.]0'__Y5"OFW\5@2B^+:[A:IXJ2<WP`[@.^SKB,W(OT6W1S
M?%77W='@I/L9'VX37:4$;:RD7EG`GMKB?<W=&B&C@$F?9J$Q_<N6?0DS=,\\=
MKZOT1OFO\J+0)U(W5)D39$N=Z[@S43K&L0B`B`\N<B#NS8!>3F#;V=7'/P"D-
MY(T\0V?.LP\AM("+C]LE)$;"D8"A"P0D##Q[4:]%(J+M-:*(F/JFQ/!]Q.)[)
M/0(?":],VH1_!3)Q",.OH8DZJ"W0W9`GP7Y&_[5?*F)6&BF%>+*M[#I)UFO29
M.^T%*(7)%1AD$5)BC<2;`6.;2Q<LAKBDP(ZGYFJ'$I0`A>^-@%$FD+]=J50&M
M_YR'`%YM.!UI"US;_<C[T7;_-&$52KVU`#^'*XUH!]>53+3%PJZF+\(>;J$!L
M6XF(A<2EGC[;25BP&BU^E(MPF5IO8BL(/&<EKI;_RE1L[1_H12[91@`9$+"+L
MG70;>1A];XUO8'DJIJH(+LRNK>=`?^J<>([B[A),B-K`SUQC]S#DGV/UYXNU.
M8NH3FMVI]80H$.2OS0`S`#+1J(`H.]6&\T"M'%IB9`;*EW_DJI>2J2<,VA+*W
M(.7'R.@AQQ-9&^_%F$H)'G:H.B#Z5@W9-'6H+Z3@F.@T8,721`HD(S)W]?/1\
MLE'2DY>,OLW;O`\9$655X)6$'H`&Y)9XD$3Z)V3:XX"CE^_UA@/2)<4?@9E"C
MY_&L1.TQ&Y`$)%'PN$1JQ2Y^#::Q!*\`*)^V%Q<!<F9S@,!;`RH8I@`(?4Q1'
M_-WOA<'(@"8Y>\8NKYW`#S@&:6&,5*]/A`@BVW7R0`R1/0%9+,("X1+]2B-'=
MB];JB!O?0><YJA=+$L<[<75_J?[^'\+O5?[/3ZA<I!M^_[%<U\00'`*)@$1_[
MCJ]/U_7]:E?Z'^=@,+GINOK,'CKTW<^2KC=6?M2_-\WS*M8T_RU5I"=XH6?=R
M;7^PA$8?FB&?R?]BO0E%":+.N#XMM&VRK<MKW'8?Y"=)`.(0Z!PYW#OYGY<1Q
MKNJ5\:\="(F',1W:XQMXO&;4QU5AV'P-PYU5Q'2+C=/OKN4O0)R\^@)S[4&7)
M@X^X,8^`C8*W^HO/H2><]&@IJAPSIY.?U@]U(J@PPE;>+@,'(&F_?T7^KT_?(
M>!N'TW<%D6Q<D0JSGPN'B\\$(QN0ADQ$_;"()B&([]OU(-Q3X@R5!GC:8).C&
M1\CA>ZJU-0*F>P>FX'C9P3'%8X=V)W+?Y)F[A/^DX:$U:7?QK<ZTVA,Y),&6&
MC=7[3=%=D"J*#@!7_5O0X"D<`X0T))%_43"[B>?C(.@A]\79@Y`27O\UWQPIE
MTM6F*G5X[^+U7<#DQ&!$PWN:[@N$$1A\8@6R&D_4VL4ZX3WXK%8-]X'+102#P
MYP,J8?QK\10F$1T-75)/:US@('U=\FVP\:57?1`MU@_!28805`@.B4+5FK9VL
M'*>#T;,VXY812[`]P6M$I6[*2L1)W@PP<L:<D6[OG#KX)U(A_8<ZT5#!6]0)"
M@\!7X)!TI[NOVD"RZ_=,./AA:!:Z=0YA29ZPY;LZ+JMP!G.,5&<WDA.9N6'FE
M%EUEF(>8QM=7>&:#?0:=P^XX1EJ%[T1/(!&GR@$9**=F$B!F(8%W.L=>GET[+
M>";5CDKP?`::ZAT^W8YEZ7&SGA)QE"#Q//!-(<;WTUW>FDLCP3Z5OA]7A3D>0
MIGQI\@OR'"`#M.<2(%()6S4F(5V#TO`!ZF,YKET@P!R^''@:UC#VD!^;%@:]S
M"G^<F++B@=\BE&?6:E3:N$IFU:DC-3`Q3U@6XZ@:H)TR';;"$R`+TBL,J*LL'
MH,GE*HQ'KK$@NT3<CLC+(O0-!T*&H!HM</<.@6%4Y(UCY<(+1@1:5DA8<"3DB
M3$U&\;9?^::=.WK0A[FIMB()*Y(@(TL)R531]Z*M1]A1JW7%GD30POP!Z/Z?#
MC0VIR3V4;D,#)#"ICB`^QCHBMD.&W(@C@UG&/DM*U`J`>WK%?P@9&)UJ0.<Z/
MA%[ZK1HX-<5"'"R!*4+&`_QZ27L&J/&@9[,%WY:!RQLFXUM=A(IH=F-M)Q*42
M)GID$7&@"37CCDLY"K),ZDF;]0A60-UY'&G5H.)?3&;@1.\4/W`IN;V34.`HE
M_9"S=6-HH-E6(<5\,\RC^++L$YI`S0A<C$$YLB)$XH,FJA-G9ZCY5S(0K<XM=
M#ZW@4C8WXTV0@W#N?=]2K=NW^Q2ADQ>7W*U#-P&&82\;_D?P."Y>PW:UV/X.:
M@8^ZRG%N\2_UXE?=KJYO^6[U#'`C`\A_XF>H[_1-N?%^?V7^3]0PF`837]T!:
M((\.'-\SO%]ZT13(U$+?_1;DQ.6M%AB>*^O/U?%JP';SR-_]ZM^+>_#I1Q0^>
M`ZR?IN7NI3NS=[Z8@UJ02&/!JWX9%(U`;EG2!?)*OVPT=!@?EBC225-B1#-7C
M/I_.J^.L;]]/1\B0-3.]BG\**]F&!,K%\OI4DJWLH4I]Q0;6@6WK3D&?B"5Z8
M;GVJY+HS?^'%=YE7,(QFMWKZ/M/XX+N&_V8.6[A5[+W1T*Z[N`9>^RIEM=NR?
M0,Q%PH8>;K8\\JV(SX^UV:^<)/@TQ/$>^%Q\L,[A^[C?_?\1B3L*_V_M_\/\-
M.R)_P$-"PWK$BNNB[XC/W]N43^%/)S=C0)C%M]429ZMSI39:2&6OS=F)U2HO[
MX=:F2U3L!F,@QTB\9*G84/PRQR6=O"],1SYV>D]""J'U4T'?V_DJXSTO7<P8&
M07IW]I3)M8Q;;%)_1KYW\IY:G3/7IL'X[YJ'L#L.W%7'9D(0("TJY3B"X&('A
MSZ'!)IR,`&,F?GU!;Q&M2)S0)*=0)7S"6OT'H>X>7^.[?VY%X,1Q;X+&=KNB\
MY;_)?Z!_GK^W6[UV.@U@FQ,.Q\TKI?O>"N@^I)B'Z?UPT-_![&V0-^UWJ8L][
MNL(Z<@0U^5\;G.4^=H+M+Q\J##8CG0SF@J7:<46WLT^DXMJR[(.DW7:&,+TBA
MEEJ%23VNAG70\'T,$">F"'IB57^&%'31O/@-&3,0N\9KWX0-,=?"A<8@'^S[5
MBGJ\[GVN!,.T];PM@'BU1N;Q0QO:F/K.L>?N&+?O*VGO`PWM6O0&R;9&4;MKH
M"N'Q<D49K"&#PFPSQ1;>=&*C+R]/OX("4@/4@3UKXIVC($]<W>ZS8^(8WX1:6
M/U":9H2&H_8W76(AN>O?7%?'2=(7&Z.EC8,H>%7!/"DXLZ:3422<JX*-KAJ#`
M;`TFZYJL,^5\&15XI9^#-V!=WP&-B);X-HA97&-$;*DN+U4=N"9!F.]GP0Q>^
M^W6(ZS,`M+'Q-F>]'6C$W8A5Z=:8+NTA/*8M?5.[T]?+760T9EFG3'E+SCC.J
M@3@$.?9AL<=)";NXRNN-(\8_9=HP3G(M":LD11.['XLQ14.\^2Z)7"YM]9Z;O
M0<K`%YT'?+H\@R0>UY`!"*`F/=-G5H+@G1F)MV=F25+"-LN^YL"+NOLU3,`N6
M1VS*"=:D^0S[0=CLTZOQ%MN`U5V7=G..5?EN=AJ<<9Q]B>6R9U79*;FO&1OGX
M;A7B>=(\(U2T:VF(=!I$VCOM"!/2TY+04WG[+_;A:D.?Q-UR6)-R[F3]>SATH
MFQH%"F393S=&ZLME=KL5:`KL"J@&E=Q7)]S.8[U/+^4S#MEL*ML6K7K>$3H4D
MJW[G1&?H>4.S\.D->3I!JJAF5.2KW/=^8Y&[*<;\\^Z;<*TMUU&FBU>B),OIB
MWGH1^2SA\/Q21)BH3FLA@7:#G+(E=^#,!=KC)_W!<YN-^W\:,A:3\D`'M>[5]
M=N[DB;&?_"NA)7I%'0S0ACE-$/LRN8R=H_P_4HZO?":[`I/P2.S?IZ\Z?%(*[
M6Y7PH;GG;3"X>X9=ZH/?V^[`N^F34KSW\Y<R*3<\D`'*97-KNY?8(K<K>)<I!
M.40)P+&08-7B>)S04A7.D%RD5ZUT.8^_8N#2^-A7]VT_WNE.>A"1"[GI202]+
MDA0V"OBW^8,"?+"0ZXZ;+Q!:)XY:Y\CN=3,<0NR#'_#2`.L$Z)VM30O8ZLI"%
M(>C^O\..Z+P'R_(*J@B7^158P<."DSI58KP<`5.&\,=62VRG,C?3Z:_24/O4D
M&LJZM(LV;1.:8US[6Y(G365)H]V1.U2,[7\.[(YOXG8%UK#3=U>8%MN%7W74_
MQ.&`D^S"ZJ3X/$,<F_C,B0&R`ES,F%]K#AEY@Q'`4"9.40-X=6:_!O&+EV\M!
M?Q+W?>XAAC68J&^X1;L3=NNYN0@C^,VV+R(G.N"..V#@D^JMP^^*Y@</ONQD-
M@[$6D1]4C!).[5W(LD,MDE_X"7W6'!_8KYU&>Z##7)=WO<-:?`-TQ1T$?QHB.
MFAG#.^S'M\5HU?58PC;FJMV)!H_S,R"AD3\2OF$`;,F\_WK\,M@-!'KSNE:S&
M#VLFRKR^5*'=IE*M>:IV!Z30X=E:$W+&<-$M)08=G_:]-<K"'T.Q:9B'XX%)?
M^LX9'GO=%WT;AJV<Y0._53N)@5,(J@[:VXZS;X@N3H5#\G?QG1>ZKOHX?-P=W
MY7M_&)0:V5"QR'N\GW<9R=G/SW<'H\O`/[W\8[4>HC#]2$..\O!9/E)J1/?Q0
MB9"R[AP^C"%OZL6OC/STZ%O_=&:^,]=T'E!B^7\8#7TRMP4!\9P&J2L_@:+\_
MG_].SIO8>6[T=%SJNW^SWF1+&+-76\(!UL!;#A\ES.S+$`PD-ULDQ9%MK3?8W
MQ#%4FTT)_K#O*\P;&\X?MTF`!4Y&9:J(:34+3]C(^W#23`_KX;?ELC>Q4=O('
M&W9G_O_&OFK2<U9`<2-(M((IZ^*WPCQW[YON!%Z^+'X%/"V$A-:Y_B>+\W`/;
M$_4N*:UTC2`KE5SSB[`,[<?"YHJ8N>74/?*<X>7#>3+94!.79#/]=0&^#8B^@
M;BZ5>KF3TJA,;Y_/P?8=^#HT:E24"7P_3P]*N'Z+6,#&.7,S09$D`;X;BN89I
M7YB;2K@\O`;Z*SS\0!G0EP^CSGZ>7K[%?IXO-T^K]U?S>?S\*N=/F_1K^;Y^I
ME7EXDZGGB%7`]3_]!MRX+O->Q:X,+&%UJ!#'PL&9178G1Y?\E?DX-+,;W6^)%
MWD?)PZ0ID*EAGR4Z2,*]@H$@/.X.2ME!>0A'\5W0S+Q?W6N_U8KG+B&)*4,+%
MPH!Z?5?P?EA;_WV+T#90P5X4BO34ZX[LX65J,:O$\',ND6Y,9`2-_3VLH[;;S
M8LF.W%DMC:(GQ>S#-$R7C+V>2*@+U[#Y7ABLO-YN+S\RNNC4&*\U%OP^S#'/V
M32JYS\@DEZ%?1Q<7%YE;O9AN;WAXV[]'#Y]ZU^CY_GM</!]/T6`I.FB=YZ9PZ
MJH#^QA6JB9\QBJ)>!(K0@*<:#2DDR<]0FA.N4.&[-Q!/EO6))T`_G*&!2B!TD
MF7J.%H<].R*+8+;Z5Q.P0+@"@U$9JK[HW@YQ!J:L"]8&B`3</,3!?M?@;\@RG
M`IJ=?4$40+<&Q:2;F.$I'9#VO2</E+4[+*6%S?MGU)#M:M.:LFH8MX56E<S">
M6PQF+1T/YW<C=8/]^D',1A#4!\`_>9"[Z8=_+F)#:P!6*'\7"V:::^#3!AY2W
M5).513`8`",/"(:_QMS,IEGBD;XU;LT^D"&:L8!95^7O/+V!>B6>:K=W]XC1S
M`$XC,LR&N8?JF`E81.([K('`-L/P(Z5VH;A8ZKK0=BT<.Z?=%(V#AGY+9*?)W
M`Z'$H0^2P.7=YLD,Z-S7AK5;W)V'.EC0JXO5<Q',]WN>\/@Y[^#I`/.4[A_+=
MF<6_=KI",1G=@HA^VG-.\MP'L2DA"F!F8_`#H23(R]+&SH;?VDI!I=K88J;$Z
MD0NH(37-K9XH0=*(>%1>T\73XMY[!0=JFDUXL6D[722%&"PXZ.Q+]8=]Z;5"I
M(7R<F$L*W<2#CG&N:S[,&9B)EAV&@P>X[^2PF">)29-?R+J>=US1\6E`NNFJ2
M%.X@F[<&/.MHI;9WL`BFL/=*'N&/@[FG^U/<*<TM;&@U+;4)``#"%P``;Y;.(
M&@``$T504&UA:6Q<15!0+FAI<W1O<GG/^P='<Y;:..14^GG@#>\`IDY3,)DDD
M[D;-7"-W=B1@MFR$D[N!(H;QNV\OHV[S;N[F1B$>"QXA??_W;;>9G;.Y(HM$7
MBA/!$H!'>_?ONT;:;OV?]_N#@1^?]T]G8C[N3-GY]*,J/8IZ<P^-'8U6MK)EH
M.<QN;?U_:S7:U=.IZ/\9_3Z>9'L2UMJ/O754X=KUU5(/[7(:IRF^*I\W!P?_P
M<;]^CN[^OM_F;-?WC_1=X.5R<J0Y7:JI27*G1Z4=2;4>GFBXTN67Y9R:Z>==6
ME*)F3J0]B'/8U2*%U*1J39/4IR%V(?J4BI;GH'Q("5\8\)R&:U680=[]2W(IT
M:I+ZK0_D\!#Z*9<O^JC[DHIH>NM7&A3M:IEIJ'.79>AI</L'^NY4SULL<C)QD
M(V:ES:@RLY-.U1+J3"DF`M1]&IK(4ZKT23;SJFJ2U)H82(OA'S;H1Y\_SA)U>
M,G70M4F^G@(14J>/E@(3AF@R$'!X"^_\`V7"Y%:1#<?M2U-=['G%=+C9=STMF
M>4>M;%V/1D78YY.&RB/W*UDVH;];2@)XJ=N0V;B*-ZL61'5L$!IH-<.:(I3J5
M=,JR<I@AH*S:V]![8+("J<3%$N*:F:4U;?O#%RD+0UE9<3?*H+T="_B&K;V^V
M.4.:+5T+:`AG`3(<^2BG>BV1#/,RNLPS+L5Q%&83?!4HS*H78N*E+A;7#X]S'
M+AC&#@9'JKUL:EMO%%;7HZ^&QFR>:>$*Y1]VN^4P#^Z]%Q10'4G6!!SJ,2!RS
MSN=-#(/UPB]6:(<N4*?MA80]XI4B"A!N4)^&7B<=2^%%@BCBA!R<';>U87!M,
M63E%#`(0$C5Y3*UDY;`(S8M^J(@I`?T@8BG<7&4.L$8P,>50&('A+RAC:XSV?
M64RQ3!>%6EY+<30I7,BIDUY3R0G,&V]X^MJ&3`/S56$?@,\5`.R=(>&*>$,@%
MQ"Z;!1DGEW.<=SNAK4VBJ#(.1V=O7[8D]!6,)3'V65K>3&C["?G3",N"YM[H<
MR<C8<!+$UG*ET->NHI,2+Y(,F4@R!,TP*()`)L1TWHF46-T!]FI35>(>EY4Z`
MS>ZZ`I45.??14YOG14]LD]&9Y%^G7.BQCT;&-\+GCF")`W"JZ'PDV4U%^!4_A
MLM[5$0V:H/CEN`:%![@(V0G9A:RW@L![YE(T2JGX5,6IF\"A%6$G;L3;B+[^'
M,&%`(US^2Q0ZVO2RIR-BB#8HFD4UK+%":M5N,50043]0C17KJ47:P2C+DH4%S
M`@"4N6;4#R3`+V#2ITPJ2+53B=RA?D<C@DLGM9"J<.H+4-47Z=J6^IB9S$A6J
MMQ6*+T14L)9)WM^E3M7HXKYE9^33NF5]7SF5VJK8+\\:CZ:M>I)5WGPQ`UGS6
M[D?R_ZLW]>L4)Q<RGE1B*X4[O9[E4'<)!HBHURB((@@=-)$Q'_C^?`"\VI:B4
M9F!UW],**!)V=&C]?6C&SAW1C:/EQN0Y^7>V/U_-L2HA7"^%H-E-A7\>WUZ.O
M[I(N:2K=N1X*M`VYS'X&T^,!/RJWC(3/XF_<`@TKLL)EBIDA`Q1FVTNG2PS*N
M/NN#N=MJVRDH7VL#[V'AT2M3#Y2II)#9?1H1.RSA>CPL9L!X$G6/GP(F:_^E8
M[/`77RHH?3]`3OP'+71%]V*<7?P?=-STRQ/,;NM#L6"4=N4*`&9_"`N-Z1^C(
M2IQV%#5>VK!W[%*\-N$$[?A!F9`'FN!(1]=2@<P@6[6#?L9@5)$BT</J_I9P.
MH307Q-4^#3CR8S]JEC:?QL>P;,KWDX8J&A$@1D\D*F2'_)"!Y9DEB7LLQH+I(
M+"%>,@R4$S.1IOFP$OD<D`K$=-BHTMI0_Z-^>OV=77[OM]_2CA`2<_#ZMW[\\
MO#ZN#=D.B!AFJ5&HJ5F3!8:;15^&>J42_.`N-Y&+5QS%P?E5:YF5$)_Y8*YMZ
M=QRRR=B71J38X-JSJ&)'<*#H1D8%ECLG:V/$)WL9*,Q73[D/D]'[OT?I_5Q8L
M77_:QI9(@30MC+*[*",C'R+3#`H2!L5&*X(V_+;!$,)255,V!#?&-@JX<O"5X
M[3A)F1+#&OI@1*Z[S>B;NT79E$\7I6T)F.[*6'GH.$27EB\'F4G;(L#<O(N^C
M$QXYOMTY\)G2)[]4:-_C&^"1L=_1[KE^"(P/2,CI=Q#">ETRC<#57D,V86A*)
ME;KHYXID\!@TQQ'RGJ6G])A_K"G&RL]Y81$->%XLIS/>>15?5\YMU7SFY/^:@
M3VCK0-0`0K48LSL%DJ;JCDGG+(8I.+AT='LPIUNJA32L7"1B%AVQ+N@.8+[N]
MZR_&3$K+>-7+V0%#,7WSI[T0LC3GQ"]T(B,Q-\K1-!X31X:0H'(3CH'JCC/G/
MD(DL0B%JNJIWYS8RC?"+S745UO/G;G7?#6L\`_XP6>/2=*17DFN*\,SK!EN\Z
M8F9/=B<E8,)&D>"]%Z2W*6!AO%E7C<)<JM5R'=:'3\HX9(/Z6TD?#2\'V&$%#
MAC;UE\2HD%1FS9D=/P]Q_G4OPB0`Z"`5P;+[U<-UB<\.`RW88JXI=T0J+--!L
M[;?1A8Y&_$1^1;&F-AW`KA"T(A-^D56/\)I4['.5\^NHJ%I:24<$<R-%A!4(9
MM9"3)ZBOZ]7''</PQ9QFQJEUL3*_)0@I;2'A&(IV7(U`0V%+]5POZY7*OV_9`
MN,KYLW(S@K)5@ZP^3%%EE#BMI$&"?.DM&F4X'*NUD[@W++<&6*Z8%8>@;'0*?
MQL'`:4RBK(@=IB*:-J\H0KC"@9L=CHQU*K:=_U,\3%8U(9.1+J)'0.>1LADT7
M`'5H1-L<P"F%S#@_PC:\^Q@&88A0Y09AT"JEE@^0)E2YL7J/P78IH5YN+&D+)
MS[J0O)^Q'\(6?[S!(ZK]A;%RRINA6;8[Y?%V7\0@&8O"'T2;&9F6/.(2UP($B
M3;9%OT@$XU(W[S6XX3*:%4P2TZ518SEBBJ`C>]C,YIX6)8^"09$?]"LJUO+RR
M9=-KU;_#81:R,K,1*./=)1\.M'5Z_Y:.K[>I'OT=6CO,P%TM:6/W"BO(TMXJE
MP]&7BX-_C/"!6>5*\@*"V2/#?="-T/[A^1*E?1=QS\BLKLG+POD::E@.L^*#R
M#Q1<&)MI8+Y7>B'3Q_F0AA8Y-VO%.JH0K(+DUV,\*9P`U&!0?%LD_A7%CX,0$
MA6CFBG9L/2VZ,N3"QMAA/1S9"\4<6[$S'-2O\`MD'@P2RTBQ"CC%"UVU6D^C%
M3W_Y9ZQU2GVGNPPLO`.'R&#65Q/^V4_&EIL\';8D=P#S[U&JQX8^>-=PBPV7[
M7T/NSYN3=L2<_F1__.Q%I'F9=^Q#RWU#>^#=)^.M5+(G<L;D]L;?CK].O#1&\
M+Q`WR\>[CKMW>/;6^[Q4PI=E@:)=+R$X3[39N.RGP?^\U:`S\RUL:#4M<AL`&
M`%%P``!OELX:```=15!0;6%I;%Q%4%!?:G5S=%]C;VUP:6QE7VUE+F7+<Q&\0
MA+?6-MM[_<<=`/FIDP`)`A$E22M)).X$3I2$8(`H&AEQM-'-&CQ(V(#=$W="*
M*,F3H7G*?`G1A]]][WM]N[N@``DEHI---MM-M__QUO+<LDLLRY.%<N2Y>!,N+
M9<MO'O(N7GWH+O0S>A5]P':R1MI]7IT#&,Q;MF]C8JZYM8S!K;Y\C[S9X('GI
MZH^W:>R<;[G#AA-^C8Z_7ZQNXT^_QFWG,6*"J8U;%B,7M@,^>`[_B/@JT*'3A
MZM#-^ZO3[?;[9C7,KL+F,YC^-L^2%QYT=$[?__\.N,6;VZ9BYOV;5EBH/)3#S
M]=UC=7]+UVMW6)/L'\K=RU<97X[5MBS7L]W?KV=RO88T>>U>9F]&]<KLCZ)O8
M+=_%99K>S'M5G=K,[7>8V]^W<M;6^Q9VQ_Z_?8KV6-]FU:W[%JSW10W<K5[K7
M">@&K[AK)^(U*F;MFLU["<M'[;#D$/1[KL+[CO#%@(T]]W$]?:Q&;!.D+3L/G
MV)Y0GO:M6;K)MMC<K7K#._W+VY=K^TP97[MFV-GU5<5W:]FONWMW3A-G75@[&
M%:YW6+K((0]=BSOW;UNV"HV-L,'^#[QC=7IFL-/\)P[DY@.#'?`X=\&/<AVX+
M09J,AFE/8+5_\8>8T/'D.;`?@<=<^MF$=/#<_8UZNQUKX.(;O&9IV#B#<X7C.
M0X3F@Q/<1J]HP.27\1\8:W7#:VPXY@+!/CD#..Y,L(\<#2_QY>'AQ"I)H.-N]
M`GL[6`SW`+E\+^5N'*2KQUL-3X7VAU-*Q$:-Q-0&3I:>JGQ<99"^]##B.Z=O5
MPU#0#Q]J&C`;BPG?/-Q;"TWX1U8YQ3DC2^#*ZV*'PX0'$`8OX'GS8WGQ1W"TM
MX3[WP_A1A:[GX6-IDM'VVH6F03^"W"YYW,O!P`CSL&)NLQ@Y;PPX4_=6AAPQ9
MW+C-?XX3P(X:XZ'-)-`1M)C9'H)\XG/G\<)FO$'-F@4L9O"T^&?ET(,^#Q2.Z
M5Z'%?$T^X.:_6XK0!Q`5/0;CF(_>:=P8CH;IB>D&*M-[8_8"S=U[!EQ')]V?K
M,@X!NM..HP%EH(GTWLM981U<O3GS(=]NN?E/%][#CI[!*%B\3.5^^\&NCJ^YF
M6L76(O37=;Q9<!]I['C!WR#/[[8M8A(KKP>P<-#@'06;EYB-+X\Y+O9\&5_^4
MM+R7E.GTS%R@V#+CR"Z!C)!YK>[:V[UAB[V(/"YDWL(..U3F#&]6@,78T7E-M
M2!,B'6*A,9VV;AF;1KK-P(Z:&7IOP1)GX;;T%-#,>TAE3`?QH:?CT[(U!`#MQ
M-_C!D?%E.C3!81.[@#0*B6]Z%`M(NAQ*`UVW6VF*AF:W<J&L;E0VU<!#=PX08
M#W8$Y=3ZG,[P6F;KF`."FI0/8XN'1\95T.H:DG4]9?5Z9FPA67SQ:9E'HH*OS
M&"XVUB*%LN$KZ?RM,1TL54ZVP*-W&VA?@:;$"Z&Z\;SN`>T#@8"Y=5Y8+ZX&]
MW;&(R#7L:RZ8>X)>RNIF];MJQK/>8LFN,,WKEF+W#IB4#AID7E,;>[P3TXD1/
M]I.ATS5K.W$PO27NIO;1B?<!O#I&Z5,UJXMC[EPW7'"(9)!><K-_+D-C71D1C
MF![GQX_K4Z:8AVU<#'FV[1J]G:3V\0FA`B#1>#TNIV7G>5U97H^QUG_AUR%X,
M'7`<S_<Z_]KKG_CKG:]9#KLF(-S8CKEAOH=@#)"["63^5V(<BEV/_)V1L)KP5
M`$QG,UG^&"5V?A/"'C+AP?_4Z]&PO'^)TI+K89C*,[\!H50VP:K5,ZMT1;8:/
MG3G)W46<+@!EGLL(<?,'R!Y\,4#98B,/7N[%7K*;&QG?$3\':7G:,("=?$=31
M2*FMQ?::`8?`1']EX>P$XCP./@#Y2@K6Q#M;2N;C`!%SEJ=P1#;!L0D(0Y\][
MEX<)"[7L6`<X#VZ6U2*(J;=#T@L2G4`=1@CTQHV)XAN<*1H.P$5-'%5<(J&VH
M0\<!VQ=<5Y*M42`G!-QD>HOG_)E`?&=>*!"YX!0R?QD7$ZPI.7A@W8'T70'NJ
M;,NF<0\-#/!_@?/3!`0B@PHHIH2`L>>B''K;`IA%7DFF188>%F=>A#'MO<+H9
M"(S?DRO2<N!9;@/U'QWSX!7?!D:;(."F!P$!D4R^V#C/;-KDS^"8QH&"VKZ-&
M&H:M8L4R]J8%Y"0P\`.5U]SEA`BJ.@N1(/JUQQ.X$Q!P?KLBX"3<E"22:4'BP
M64TT_'&HID@+<#+H(8EU&JISS-HG-H)EZ(7E%])!']_ABTL$-THM/5$UIT(BC
M6%;R1J$-,<1R<_%BT"B3>$$_RLH55OY>^G3.G92>"_X)0GC;>9'J^])YDOA*?
MIE:N"2YKEF0QQ+DD-?2"29>$!?G!((\QJ0E_I9U`&-J:8=\L-H>DP(/KA041;
MH+F`C'8'JCOIG5I@?"I-3K+@.-!J14%ZK\LT5$P+)'+^4Q-')HR(#D$:]DFPX
M9"FBF*30CY@C<M16D#)](=%EYC;/B<QZ4@(]$H='.CRH9O.C\G`&`.`AG7/^S
M4>-CD)T?1.^4FS>L%)"1/@#Z=HW7UZ:'_ZVM[2W/+-JVAQ,''(LOU_P+R^QLI
M]9.7:UOR^?+_>_FCV_[_JIR^OK=?WLNV)!G[Z!#X0S7X&QHP/)C9GS5,)J?+)
M_N8=/DR:0.L`4A5*^(3X\@@A_;V-?U?<"C`H`]C0!W!(\S2#0C5I:^:<"@)4L
ME58VF.&70DA5[/41J$]"BU8*)@^((TCC8`N.IU"V)#`$7,M<BTFMTHXOO=`#2
MI`$MQO#'%&KR=F+)W^DB9D%%<-?1218!YQ&%LBAZJX)%\-F6,&CB<W?/8"D['
MKS`4;2F-6T`>?RH\YM([6:JS4XQ!.\^#Q@8^CWW3>[[ONFO0"Y3C!Z/&--QCU
MZGW\`2-.C29N=3XB+#K:-B;AG2GB0E,@\"7]OW).F8K_>E&/2_[4J2=9^)*DF
MW0/VI7@0E?(FG(FQA_&@KG$B7>2G8]CMQ@&>?76T:ZXBH'D)](1`$>4"#`UJ*
M6![*^V>?;<U0_[":@]Y=JA1M2(4XU#@-M`&X$*D]6?7EU+B?6(D6IV+FJH*XF
M"%D!@[28"78,1)3&TJL@(@`.AEH^`:-2YR-68-+GS,;<L3<2^<25=WHYJ`7#(
M$-<[XS<+W+SSL+YX&;'L25=1]>\]!XTUG#Z>ZQY;G[E_5UN7JP]&(#=FZV"U"
M87G@SCO&/0H(UE<D!>,9&B:6FD(Y8$FV``\!E8>)XM.,%FD:"`&Z,`.JLI!2W
MYF>EU#&EJ7'3YYH"9Z-!2PRG3(M@I3N;^5S%@8MH/'EIXA2E:Y.''3W\41L>S
M,#ZD`F%_;V5SX.<,U)IZHV4NBD-]6NQ.B:PQQ=D<I8>`VIHRR:3>+&@`G\VIP
M4:ITDV%6(A")5\B3\>H;9^K2%&O*V#!+V"3%Q&L95!Z$X1J-<@KNHNU\5G@2W
MW[A*STJ4?CB]26-<<L%96-0PW*0:5SVXQ;8K,J!^*[OCFW*3@)=]DTE,3^]9)
M9#8I^`61'NQ^.FJ\NQ"8%<'&1(KND:"`JW(L3`7XM<#+WA%D9$C`9?R",40M[
MFE2R$<SUYJZK\_Z/62()@SML<E>G_AJ/9Z0FQ*$0S1/6H1_U0TG88C>B$1D*:
M!"L/,&+%E"QR8@H1@%'B*=#Y:N:MU!]/!S4*23:_!-MFM]GY5(L=/Q!-]":^J
M%-5"M8A>^CA2$0$9`0ZHC&'I4Z)@J`I?,P_0LS-035F5/Y<DB$8:$Y>#50?/E
M!'0?9TFI3'FBPH6G&V6'CCCFTG2=.Z%UV'GO"54K:45N*5)2HC_J-/.ON,#1(
M'8Y53?09^A?>R81D4=*CTJ&IA-5$'7C.9#*J^_&V]%ZRK=\>W3RD+OXK+-;VX
M<Z1%_3J(,+9F"_V\97:Z5YVA(0TT*)^)@)<?9W1'OY6(8P57+[C<B)],CR9D)
MJ-F,*?>WX6`&>O$1;D<YY87^1;$4_Y[(=U(X#:>RA6Q/)AD!R/@PNTJF0%B/5
MV/?>2#JSA:=\,`P<[H`C^]ERFL')T![)"!63\HH1ACL2E0*2W!D>">Y?Q'2[I
M2K2]G[_W=;K:_W1)<@)!!28.P!3ZSX/4-_3;<_\>QB^L-/D%Q\J?8+CLCP94]
MLE#@)>]#]2C57@S+21,LCMDB<%*J@L(G`>"==I3XP&M4LWHG&%II6:.)=;[Q?
M)A_HO6F6)*WM\W'I-_S<;GYU+Q[0S_S\AZ75C1ID*$GLTPITRA9*TY^2N5)ID
M[W)S&>Y+^=.F:+0CB"`)'3Z46CZ$?#%6S^08KT62R)B^)U(E+WAO-P.AA>@=>
ME9.N,XURHRZ?_J,NK]:,M;^*,O):T)K&F6L3QSBCT%@Q-JH)/=X``V)`Z:X'=
MDVVH6I)9:B%+^`"SB;P`^G#L\>2*0L1Q?N%3UXO$*45?3(B_3#HW;DVNA+FA;
M]C^"K'X:!9I/G3HEBU:MEUY%6/<"F:QU"5<!$<QZQ9B.O>&7]QU6YG01)TF/D
M5XV&EZ!VHULHX^GE*?>/),#D#0R'P]B)%&6"6E7)67FY+)3><BKD3-Z)&HG/J
M<'`R)*$AAU.HNQ,2XT/0-<_(G4@19N1\3I"KJ6H1Q458\)`\I`=CE.AF0"JPM
M21==<S4-L5AST%4FDXP1?$^1&&=J1=F='JF]T8.IILZE,%9:^>AR;URNR%!U\
MW]P&3J<W%$<$D"0A25;8U!VD^ARN7\&1KKI$*:W.X[P/2U$)/Z1(D>@,C?9LD
MK[XW[A-3=*KMWSB^&V(&_`-^2U:DX[N1H*BU("UC>%'$P@S!H0`OLIR3B.I\T
M#[V/5ILA\:?D!$2@+&C;@TD71"`%5J"HYP`[U5:W5K0TX8%)U)T>;V'C(O@VI
MU"--.>(OIQ//^$#Y+[@NC_SZDD1#;9],!$TCDI_&T%,I:A+C\$B"M7(E7'2?>
MD2:YH'>YE2#L.K1LXP=&C:X(AP.#V>!!Y`.B`A0,+SZ)(,E-^O1)I>=3[-$%D
MHI`0"5"OKG/D-"&M>$E\B+Q#2SOOB,^;!%,"JDX&,*K,AH3F(/ZEB4)@*I8`7
M*:X`V$&X!6$Z@;F->1/@R@M!R"(;*V#%89CB#;'QO!?B%BT*!2'`FE,_5?.-9
MB3+@\)^,&9\">!EO]1+YZD.<1T<7)O3BPO#'4#BL:)1!F5(HAO-,Q1==!GY/H
M.XN,47(L.<]AI%ZU4H8V>#+\.?O\8<S*6\;ZL^I4B;)X#DS%NV5&/3KR+!!/T
M99"W9,;,4+020B0M617@6VM8J,[@*#X:C3\V>CJ`/O[,5Y+[[M%9O>+ET5FTI
MH)0$%06ARP*;\&`F':8(<`%W*L8$75:O*&BW(#^B2.'+`K^_?:[\'?:HZ.?18
MWSOWDD]'9/)?3Z-/SYO-PGTI*DYESY#,.A0'J?2'DD;/Y`\JKZ[26UO$&>FEC
MJR.,1AGQ(6ZZPTF]S<FCSN>@U1;T("9?!_,`M2AQ%FK6#QD9_!FNUC"FQE#<.
M34L1=V"%X`")-I80IE+/$=725,GYZ?1'7=8L6546DI)O-7FM-P1SV)SF:C0A;
M3F8+^>MU(;*NY<AW^#%E>!XV5$='J?1I+P)A&2(AK6)K=3*S^EDA_.3L%D(V/
MW:-9`4Y(*_S"O8EK_#!#YH(*$?YH(`S&!#("E"2"`E;-.4G[:&-[Q-<<`W'-F
M`8L)C6)Y[(,PWL:J29%'^-L55#FN(9L7EG#5,V;V:I@,IB`#!\M0:0LE$`YJ%
M<^[]:3-G&Z7\!/)5?).=-JG-C`<0U)'`[75%>T;P2E3>2EVQ5G&@MNGHJ@$8E
MF;TU-OD#<\])*']92MJR\`,Q%`3?.V]PNB;8XL+4-&#.-848ODH?OFI@OEIA?
M?/A_)1*B1KY[;-+778\M251_&.E3H4)P4(;3BP#1$H@NR5_YQ2OTQ+9=^T1-Q
MT[#1DN4W,SX5%DCU%2?U=2M_)U*5SVD3X'$5_1>=/K"-J?I_[]NC[7.V!G-RF
MRG\'>4"EY'!5\HB="25=H>5S>8IM\M@IYB<ZR6T^6U4-$'!Q5='`L!W$"`%\Z
M2;PD7UL4FT%(O`NDNZ\[``/=N"20VWG:,(+I!TH'XD310`0-<(2^-)73RM!2:
M8>2D9Z/O)]9/GT6T>4&XH"2KK_E``RB#59C5T9`5M$V2*E5>F=8%-]IRZ`NCR
M!\!F+6X5SA5+-!VA4LX'?<+7B1>7((,HT,A+MJ'AXD_AI(&TG8&PE4#(-QO`_
M2XA"T2CD"92!9;)4&4'N'7AG&CJIPH^`T;:725<(%C\9V&!XJ+UEQ8M:^%[A<
M"T/<;L+7C1*!#U5>285&RYSUQJ59^NG*J;^)<:_JA<G+3CXH`<]+]VS\$'VTW
MOW[:7[]M+]C%P?32_<VF-00BU@)`6$[K+R).V[E@A$5@[PA!6X!A6J$%XVO"I
M<:6P)C@E?(>@YJ:TTB&:F+J8.%'!6P+Y.H<!$Z+)>&/]B:N`(''/1%I:3G]=1
M)O'6=%$BVSMX@7>/0(/-2;\V>YJ3=GV7DI-LQ9^'B>Y2T?8\Y9WWBSWH+-@5S
M@B*K9UW:9*7VE._^BG>G%1D-]'M^PJ^+XIU0/T!:KY^%QUT5,@PX@]<=L7')%
M83?UD7?I(L^#/#Q*X63".Z'^A(7ZB0/]A'WYR/,HK")H#2D?=M;=ZPQH24"I#
MET[;Z3!,67BR<GM%C7"\^"FI'[0=)#+&?<P*!YIXM[TRO=%JV<JI)\Z4I&:GY
MH8HD%A:VP@&>X-4N!M(%*X'`W<K%VV^=,1<.2Z\_!OB&61-AJQ?;-L\YSB3HF
M-'L]]V6@3<ID>ASF&/^RTN:6!J+2?L*^?ZDGO,2?(D7&2?D;>PG6Y#3-W@BJU
M%7H1!UET_RVY[<G)@(MEXCXY=6C9OU$SED,")A`YXC"]D0!HE)T;#/;]$)T!E
MHBS7L5(M%+B.%'J]'#,\6>I,05!RL=^:1Q<#:(FCCP#0E%3.[ZMMP&@R';<XX
M'!$[<<FR:2$*8(>A?1<N#2`TX)PCY\AX7`D]@)E:;;`2%(DG23/1J^TDCDVJO
M+$(J(_CCS>J>`A:/L-8@+Y_(/MTSW$DMOJT31/YJ?JT1;A*>!K047E)7SN7'!
M?!!0I@!A@4O((\!2L8&N&1A;49V1IW>>Q8!J.T!=V$#?E0;2`)=D`SW`\[4,M
M>'/>Z]$P*/3%JF(;G')1^A@P>PW%!QL$FR[F)KAC2&XB4R2$<(54*^<&@5-@I
MYQLG)^$9_(W6)3(-6"G,00C)\%QJ!+C?$AUE0D4(G#D%=VPX!;J:#S46](/ML
MI^6\K:"GWN^[[IMO+DQ%V02H#CKA%D$VNZ6T22P\)[D6JWG?1>T/T_I_2;OPU
M&7L$Z/)`5\O</(F3GN-Y=VH[J[H-V*)<Q-1LGXHKZ?GX#I[@N9BENM,HDB1Z_
MH2TV71F!Z4)SI84F=8L0*&59PZ\#:/AU9=2[HC#,<=P,M:R9^%U#6K&VJ\K`<
ME_-(-S7HFU;8LC>B:]E&4#*IELAC@1S2NU_:&J#R2WZ:L))??Y$2QWU*+%9%Z
MSK4>"8&3&^S-I`^)%(Q'2]*DK%:YW6+K.^S:]=BSOW;UNW:N,L;8XWD(5S`P0
M?EEH_`_M+``^.7]071\U5$-%%Q34"E47&*LY)HO:8:TEZ0X/1>CD!5RJK(/\R
M@8'`V;!EOIC40':?;PQ1+_A"^Z`OE>SM+DST-,7/5=:8Z!8G<QY%>)`J;NKB\
M54$>B@C+H(OR4$3\RL?^</GFGU?GZ(/'YIYZ46?EG0?G_?03)J"7\U!*]-!),
M_A=A/@NP8W+"3<O/0"%J+^.XT<YL;YC97/MOP&T/XFU/D-L>^;7S/`_M-M?*&
M_;*I;F-P?YFY)N,:\_KS7*'RT/KWKTY]5)%]%))DC">D&5%R:6$DCN_1"(TPW
MM-,)OSYZ:%F.[*C>YW'-$<GX;QFF%_%`7M!4D+5S3Q.+`[?HP.UZ,"QZ,#<Z<
M5/_"%!7=)L5;-=JVR:UW/PL;3)4![:M6;K((9O;IKE:O=&%N`7U$X[XFBI@4J
MFEHF6Z@__-$]&:SHSSM;<]EO39:O[VX?/3;U`BP"+J2E+38D7\VU8LQ`W%Q7U
M`G<&I3\32$^IRTXK11H?F%29OT]/$GY+N+-01D32X3M8A,Y1B@A2WMN09"\V9
M<A'H]LOAFD]1>:*<G08]G:8ML_1PL,1=8L"\D?QMGR";U)$6U6`PP!/R[^*R0
MS6]G2:X&W]7>-V%KQHHA'84.70;(17D3=\+9V)-;OX*O?=&7-Y3+E22[\9@I[
M"RQ]FU981=PZWB>`"QC>`DRFC#0&RY'AH=D.5]U%$0`2B%X9DLP"NMV*]E@")
MB=K?L6K/=YNQ,(ZVDG@\%Q4=X:BJEF]XCO\&)[B-$=2S=]_5W7^7:PBT5KUAR
MF;6(EU).<(8!GJ_"P^4=7Y:R!"1P%?#F7D18*::O;'%A3MM_C"D97!+`C35Y7
M/(EX^A_^O<8T2D?N)*\@0VL5UZ!2:2A0PR"\=6B3:\QR\CU,AW4,"EP^<&H/R
M4)_$N@DT6>Q%ZZIZ.:@EYLO\U!0N,6V*R%2K1J&Z%_\W()I9LU!)+@J]"7-+$
MD3N.L[WP6*RHO1J:S'$NC=KUEX.)N+D=!*,@5T417DB5,3C:Y-7-#DS.);UR#
MNR*/5)UFDO*^-ZRR">*2T$E92;5Q/BBZ"'EH<\6"9P_0WU&XOC&FJTH['_O7?
MSNMX67MQ]YV&D6QR(8,Q;MF]C8JZYM8*TI;"K.!JX-_O/U20C+BQIF3[G#AA/
M-^C8Z_7ZQNXT^_QD3.`XD:L!-4O;`#_T!W_$<8.J'`@YMW0*_"=`!;^L4)0&Z
M+\LATX'YZS_"3Y",CW,KF(**L$)J`JR$PEA0E:*RM\<(P3VS6-!E+/4=T0N"1
M0T4N$M`-Y<_:RE.N3G#+S\;&RZ0V3R,?I5QN>E?1/=S;``FUC>C>ZGRI/<T-4
M3:'?@HD[K)RRA,U&I^&U>95L*FF/H@LS<>Y(+/DX_/IOS\@H)M+03?%23?$<W
MR6G5L8JH!FA>:=!*KS""6)638."!AHHW1@^[Q4`Y,;L?EF70G;>23DN-Y,K::
MGT1U4)'VSXC@BX>*YDY4U"1)DK$E2\ZU?1)M"@7A/W+K;S[0/$%V&724PUHD;
MHK5"*FO-+Q5+IVWG4Q($UZ-3Z6UB.T[>`^'KRA[?,'$O7:W=8[/,#AO"!+["X
M(2/MP<3D(5!N#W!NQX=+]NJ?W!4FKYT3=2<&64*$AD*<UV#:U_[GW/N`DO@CJ
MN[T`T]*EL;/J]3LB[2UEQ0F#ZT^C4%_M;$C4$PARAC)(%?LU(;+F.I!R-ULFR
MX24<L*XD)*40(A<,'IUEM&LN.A&,A)*RJF`(B<+2VUB4W,CJ'RZM"C5F<H,6\
MB)M"]OW&*VV;=K6;U:P;<KW+K/J>IZD<U12_MUC=YU^5W8`4^XVX-WPQ@VR^.
M%=\-IX@R#=$!4]]^5/X6[D)G$#E^:>>MGD/Y6[@6&[L\O`*U\=3P`!'!UC\F^
M4\$.K1I@F/9GF/C/V(#()RX8,:Y-OETQ,/OL^?3.8%C%V&SNUF=KO,;>^(`C&
M?6`RY':W<;0N28#$`UJU:IDY!>M1CC]4I>0N1HA]Z9%$F0U1$XH*$9!68'R4U
%9@(Q8`"WP
``
end
size 15665

From crash!minyos.xx.rmit.OZ.AU!s924723 Mon, 14 Jun 93 19:55:04 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 19:55:04 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5QcJ-0000m5C; Mon, 14 Jun 93 19:19 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA24736
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Tue, 15 Jun 1993 12:19:12 +1000
Received: by minyos.xx.rmit.oz.au
Date: Tue, 15 Jun 93 12:19:14 EST
Message-Id: <9306150219.11652@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


Okay, here's the complete arpbase version supporting LABELs (which ap_Buf
is). The Iconvert that came with 2.1b does not support labels and the
way you would access ap_Buf would have been to do anchor+SIZEOF anchorpath
(which is the way I do it and is done in D.e)

I was getting sick of doing it that way myself so when Barry asked about
it, I was annoyed (not at you Barry, but the whole idea of missing LABELs
and having to inform others of a stupid workaround) So I changed Iconvert.e!!

Iconvert now converts LABELs to empty substructures which don't interfere
with the rest of the structure, while permitting you to access LABELs.
So now all you need to do is convert the relevant '.i' file, and henceforth
when you want ap_Buf (in arp or dosasl) you simply type anchor.buf!!

Hmrph.. Son Le

PS. Iconvert.e source is coming next.. (it was only a small change, too!)


begin 644 arpbase.lha
M'P0M;&@U+00R``#Q?```Y&#/&@``"6%R<&)A<V4N:4H)(@:$FMLVW)'8+8GPI
M`AO-G)):$4DDVV\>5U="B2DS6%$K22F\S>SH:!(!*&L$`X`"DSLD\-WOOWW_0
MX!)*3>9NYV]W39.Z6,DJI8RPDL)92QDJ5)/`!.[[[VKDC;52WTW;+ERWT7Z]D
M^W:P8J]_LZ*^"UBMU?R\=3!:PU.6KP_^?U4?ZI7SPYGK-[`Y?@FDTRY('.R6F
M3]T&2=SBXG+D..5Z74Y;CR1:7X'.F&*!S?KS309\<4$O`<!_^:+]T,T\DNKV1
MI]/?!+-#)'[:CTNC&]-!6A=[W.?T5N3D<Y.;CYO7Q^SV(CV)8'IX'W,>KVU,9
M%GH'AOP=\,T#Z?9S?[W/2BGZ>/GY>/V>L:SJ5*G#Q#\Y7??"QG@>CACS9=,36
MCPVI.Y'ISXQGCKDJX0YG>R2R3.ZUG3H?3-*\NCH&FW)IY=.2?3+`Y/(%;+$>2
M0,FF66".<>P)=;YYOD[AKCNWIG*^#!;ZKH5A@$;F21^"9QZ9R#\=(5YMBQHBF
MTS.:9M+T3F:72,:\))?BYOIJ<<5C647?)O#^H)\E9=TKP'ZJW)Z%^^1_N<]_/
MKK<FO%7DT=;CGTPILQZ-]SJR_)/F-G,W&BA,_C*[S:UT<_2RO1YA@6625S/(Z
M.!(,N6')"=]Q0XTVBYOR:<G=P;-F69)DR+^.<=SW?`YPO11<(XH3'O-K6^F#K
MP7*5ZQ^H<BQR>#F:"=G(T#^SJZ,)W5VW^U>R0A:(GL@YET2R=\,>2$<G]?WU.
M[EJ_AK4;F[^7F*O-/IRY77)H(''Y,DU/(?+Z&=COR35HF.429<LT$YZ`[X)=%
M6.1_4-3=\$WFUJ_I8K[_?)$].'4?-P!UB-_IAEFG/7+<%UJ?UL4U9GF3BG(.K
M\)WHQ]3SOX0Q/Y'I7]:KS\IQ<;;@?AG1$]_+6Y'!!-<Y>3C#H'KI[3YQZ583L
MJ4J:XS+!%`>D9,KCXVM%)H#C@Y)G@E''#&GZG6]--".LEZLF+'&=[XAD#NA&I
M#&!ODD#ATVB2-]5%.O\D4DT$6H:^G[G-ZQO)!BK(^PK7?OY^8O?#?SF`]%)I/
M+O6`VYS\SH<]U1Y+^F/?5M\/^GO]>(@](]2\VS55&*\J8K:OW[U_%=O8K%RW'
MM]_.GN$1:%\-D]DN9Q&"]:'SUO0Y^G%NS*A!_<[+^+X5[N'!UVL&"OU6J/;8"
M9Q<6O9Y7LGQ'<D,;@AYB`Z^-S5HI,W_Z+)8DT:I8<W=.YOY.!SE^OV>OC'\>G
MP_Q];HBBN8,DD\[G0'>@RYJC@15P]T!THUNAU.7ANM(@J/P'P'N<L-:G,<#FW
M66`]LZ1%!&`#&)M.C1)+.6/0R6&AJSCG7(_I*F-YS[LB3!HY)QA07H/D>'9V"
M09!B940YI!H@C/3R:#&OM,[FJ32,'@<\((LDF<PP@OH_2_!\\D1G<*,JQ2D=:
M7&^7`RX7,TV$K1WWLQ8QEHBUC1CQB@)!BRZ8\DZQAX<YS%<ODC@+RIRJ&-UP$
M:_FTYAWI.5B%%!<BZ+'9<,)/-*]GF3+#O_7E#=->.Q:S.H&I(>;<#NL@X,.GW
M2IA1E.2_^F2*JT6UK[K5C%A^_L%%';'BNV+G;9M.>>#Y09..?5H#N,/GJU+5G
MVS8VJ--&S\U5=HP_W+.##_!5FG_11P6NNOV>Z]?_/+!1C/:.Z27\LMIU$*1O5
M:LT:AXS'X_FKCZ_W+>(?76OU:F##?[;&'MOVFS<G2OX+?[;53[!#\#38CON-S
M:YC#>%6I4K]F&_4$TJ_))/='B"47X4C6Q8CY0B=O1]^&U4Z8GLTU0(%T,JEYD
M9US5!/YJ/?:P6!".E<.!#^R[=*60`^64U'>8)LCV@4EH5+EZ[U5!JD1(8)>^!
M!_E"N/L*C/>F1Z&2.+5YCCU@ZCM1]Z3V`BV=.?/JHV0<6ZZ]W[@^%GT"8ACA*
MBAGU-5FT$ITH\*3)]M!NU`;084H#/"U`HH7Z4%/$7>&(Z\\B1U-<+)+O7<]RN
M<[N?936++&=EF/%R;ZUR&2JJEIX36A(^'6VXV$@>B>!($;N#`WMK11Y$X+>QI
MB!Q1DN"!<="/V20QLZ2BD>-`<.0EI7'G.@;JX#E]ROT6KE1>B$R&]TU:J4@VE
MO\YTR112>`[(,"@0&UZM3/]O0RQ(#T\[],$?DCWIVQC#$`.C/-M;)'>HT/L;I
M(RF@5\N^];$F#0*9H([V04T,RZ6\.Z",:REQPBD%C\U'#A3H?WIWW,?[#>D$[
M??#+)'G'0VQ&8ZB<_&96ON[.VZ)PK>+5U+^?%KB.:.8Q(,?@RPQK&N,:UP1<?
M359RL<='`3:2DT#"RBTE?ZDC7MWDLJB$4W8GP#E0RQ81*;->I1'[\.Z')W)C-
M;V7+`DO<-<9/BFO9SG%9'Q0S<]$F5#")A6PGLZ*'*M*%Q?]?P[`Z+>&S:Z:@,
MG1N_"W<LXOA>OW++O(./NN'Y#1AE4\=V27.-:45/-;Z*Y1W>5&O#:.8\FB*MM
MN:-+FDYZX;P_-/JB@92U51UM=>$M'KKV+]ZK4?R5L=3>UR^=YWD'EFK>%3D2T
M*/U[NO+#+8'9/Q94=UDQQES(Y:_9VU.?Z]:XY72Q8O8S>%+W8RQKD3Q'F?P[1
MGEH;4<!RI\A:&F@<SZ9FV1(H4U61@H>Y+!03Y:R4*'A)IB%!VG)`5KU]:R]',
M='HTG:[;I042,F<X0W1TU;N2EU%*5U01P2G!G58A<F[DQT1OKMZZ&OA`R%&\Z
MQ61L+I,='Y/9]$1:278.1XOJ"ODC9'-/&JWR1M0JE?JQ7A[!Z/-7O8E0O^3-7
M0YU:J5#SI^KD'[V<G/ZB_CKY?V=%8-$&2$7*"])S-U*EO:>#V:GK.:\G%%%76
MN[LHY_4<KY*,H7E%B-=DZX,]"1RL2!Z*+=G2C4N>`66PI<%5;<>C3/Y+',DV7
M%B2CV$)1@]('RI:U.8"(0(/",]_J]BK?/M6VVH:PGJM"R*%JHU5YPJ\J2V:.\
MMB#FLUM0I"8GM4N;<I"#KH$'*:A/69#M4N?<I0MFAE3Z'G^P3'NB+2*\MJIZQ
M&<BCV.:#,\IOG#MK`&C>Q/,+;HX)^V3/CA@HS/D9F=>9MO`Y:^4*U]+C\+XT*
M36;PG@R/3B8T,8V+IW(STI,Q,NXQD7C+[91H&F$W0-,,,>IQ``Q0"X6=<TVG*
M.=L"HT2AK#T3T0?J%^\(^U?U!"BF+[:P$-N'(!D%\I)MF<V@(M5RKO^OQ5W/U
M`^E`D%(',.?.+E@6L1L@ZJ.^I$(J<(Z"//3VX*R2J#L5-[\.7>=WMZK4(#U6`
MBJ?5^'*[9];*F>I^[/HJ8KGOO(Z9OO>K@;$X8"`K%K<X1!_4'"\:99-#?AR_:
ME%NXM8AC[P^&.7;R@9(UZR9E#,P&#AF69L-VI-86TJ+73`/U(@A=U':J3>1Q@
M\4*;5GQR13<1L\Y$@!M6&>EUQM;?16R#/!1`X/M[%X_JV+W;=PFN=<<<`JDX*
M?U'CXC16>^U8PF@.;N:H/);NV\-4VH2?4RYSR/V2APG*:U9/B65,Y9R8`^B2'
MXT0'&S!`'K;5WI_R7DCO;LRTSS4J(`WQPW^$92YIWY/+(KX:GN#F`J/4.+G@'
MWG'`L3D)\,>Y.ZJ]G!0E2YCU,G/4`D2AHK:EUYY(JB6.,?>6AJ\V2&%:I\MV,
M1^.B;1L/(,":O"K[A9HB?4EBDH`$NRMRI8-'O7QAS9,IHI!;%W#?N<5CZ)?0*
M'F/C^26YD<?<@-[]EW;P@G%1HW>7>\(8?C4D#R`+J`WCM5\%"O@_YJY"X;X`)
M18%KU3]HS1QL\9?&V;2(9!\!41R>&![*(!)VP?',)[[QAXV[-CK[`Y:4)SPXR
MY$$Z=V!H.1=C>0D^H8&$-*9[-`X826U/LBK'I3U^O^"?3')7@TT,I=\9'UVI?
M=L5H6"=J=]CB5J3T1KO2'5,NY/R6.P#EAJ"SD2A\89V-%R--B$_W)R&.?RY=`
MQOPRI"`U;F2P1<PYHZB25#\2X7)FA`*L1-J$6\IP7=P7)-7$B[()\J770@SM9
MB(!KMDZ@R4!)GDE\EKI`2`:!_^2R0F'B\>\NB>2P')*C;\IY*VYCCA==L,^>.
M[N2>3HW*MC6I:\!\F_+,'?;CRR-<`T4W,I$@CRDQ!W-BC7&%Z;XLO,RV0/"Y-
MA8)ARLO-IF66(CW3A-W=&RZ#/0.<'^W4X,35_E@E;R5TZ23L=>>:.3TK.47_L
M+=+55G9":H<H\+.P31G>*H:NRI0H)1]()S>2/9TZ+DF3XTI3^G0;Z(>/YI>Y-
M(9G?\$R^>7*-VW(14&MV0G+)XR/$Y#`?&#+&^!M&F/H+EM+U#,!Z4M\'HZB@@
MWUK'[,#']_V:81IP_6KY/$!A^/K>GR=QN$#_:/=HS6MET7D2B.;]%P[YN#YZ@
M?0CQ6!D]*,$H>U$,:DC/\E6Z!@MDG2>&,1=)E7?Y*8XBKQY`'S@+5AC:U2&,V
M%F!T:)XSC.[=9@PB+(>KT"8%^SD_@*+6$<?KUA\]1>+C$,=+9;AZI_O<46,[W
MNP"B-B06.,R(WUZ^_AWP-N,6G&[K%I9ICXATDH7]_:K,>\MB?70LTD2H\OE`8
MZ50EI9D8&2*).>2;70'11L<\GL!X"-0L$S/+K2A/+=_A3R$%+*#0GN-UD/0.%
MR:OS7+-=./*=CMCD'O?Y[]!/39KH*?'+7WV:273EFO^B@(B\S5!9'\VY1W3)J
M9Y<@K>_%D:/3%%Q!RK."D>=2^&;R5H_%7TZ#DUTEM?BF89`2QP2[*9,)/;NI!
M)6%F"32-,;0G0G.4VG'**C^$D^C#'$%A)D!:P4'=P/^F&"G,QA@K,,.!??L4C
M;@MB`*$K.$1P@^$"<V_P*&9J^<.2@V+_09^OC6W0=@WK!KHR9Y/C!&*$!]S9Q
M":;+MX274>/*(`\9Y&3++)P*8^(\5?E,B".4QY>@V)S9JZ+&[N>]CG$&;6,.D
MT..RM&'V<2^3*.Y3+*L,_C7E9]R&/`2F7Q1NV/7S(M8+@TYTO.-W177IB1R)&
M*Z[./IN]UF'OH]I$HR&5`\*%)Q!X]I@O&H2?\U7Z5R8SXFH":Q$K(/=()G"])
M68::,X8^>HL(9$O1M=DK\HLY#<8T2*&=$U^3=2@B^D;45GGJBMC2/AD;4;#!R
MOS[POJ+C;N:<,NE`^1`'T1N*-9$PR\'IFB_CY`30SEZMS(:V\WE$1^V#4#'9R
M^V#,+Y?G0[LO3?G<YMH`A#:_'<!>,K&3J7\@R@F'Z<7)5^^T`GN#!;ZKN*]]R
MJ`NI!K+0@::F`5DPP>2)-PA\@,T:FJ%V]9M>]%,A/?G[.[5,:T7SE3(+"+0VF
M%05]Y,J0>.8M]-?#7N(MH#/@RP7+F"G0H=-0!-!#&+,K%.Q7NV+2JG.G1D*@]
M'0V[D@B<FHP1`4KP0B77U[0=QS`P@E4.+3B".!@02V\G`(2]\D#V>C3E74_IX
M]1[4ZT`N$`L,D21OSF4QB<:8R0+#E#MNV[UUH-*6<G<[WR)$W5[;W3TD!K'_I
MU,"_.K^'*F/M^V#Z(7Z_PYF`07":+$C`0U\F7#+.NUU]#C0A)++IF(LRR@&DZ
M_G^1Q^FY_<_W&_OZ8+@TX\\*@QV6@I>'%VN[P`>'_PP[_N=-TE/VO.H)205JM
M4S99<7N>AB<J(!"PQ*!P?*?7[TX2/OX:('CTLKVIS?Z;'NKW\'Z^7@UIMF$2(
M2RF6:(3+$VR0D7<F+?FE.7XAOE-0G0H:'N]MRY0;)G1.F/)0;=$!J!48`Q$&G
MLF.`<R;$J6@V*8E&@F7#J[=KC#39S)2,CYJZ+%$C@6NM`4W>UXGS)/BM8+5_E
MWVK-!9R$"@LU_\=<J2S4L=J[&`B'\=(FZS,L\*>$*S"X,<("EX@BBJ\/BS8T1
MFB17[1LA-Y"%)!\M!-<H\SJQP"C[5HEIZDGZ<.PI79J2:DFX.FCZ$-A!;*323
M#T:^7M_K%<^ZPH_.&(9$N'RCZ(P3PM*7&;W/K099$753\!'21NA@2XD-O(\@:
MIMNW,SL,80NZV:$K)JHR`250K8WF%ZM3=`N]7E.>:(A4YV2*D,B1"\.`HAR36
MH;"O-+$1J<4!$B*OQC(3N?6<<D*D,!;X%&RCQPTP<Z;[MF3X!FD\5N^MPD*H)
MYA#L#+COI`LN\@2&D4!S]MH#1[2TP6">B?68U)AO7-F3#"4BG>1EX'$U#&FA!
M6YE,%D+=W/MPBQ)%)*[Z6N>GC''"VVN&T#;`'33\)D?B?[%))\=F!78/!,T=$
M]!=?D-E:MMLNBM]#LX4(U$`9SS?TH]%P>."GVIM/G<IVF2A"09VIRBQ%&!BC;
M$TY)]O"@I+NIY<!YMV`O"E(S//CZS;%#J$_F.=%#E<6`VC##8#XUI)&DSQ&8/
MQ@,Q:MF%'L3I_9A1M>4P@T*!YUA-+@:`-*1Y8H"SS.9(FU,35(M!F7S54B<J1
MB\]5CD:/T]-_FZ/E\ODCP8L9T<EUP^P>X3P;."^9VX*I<V)*:04Q.U+V@L;M=
MM`>-GF?7432B8/,E6G5+WF*G2'-Z3V];RC171BHQQ'#4-^6@Z+,)I7?U\KDK7
MR&ZHST%U+/'E(ARB5MT>N;=-&;<O,*(?IOXNFW?P8<0'J.H4%B%>'K]7LY"OD
M&'$SMRW9$B%-&@X`B2]I.9%M.M_[FY?RPASLKX<-J_=%$[AL>ZV(?7_;"/^D.
M_[A8X=I##RQYA#5QZJ0>=UQH2-6-W,T1!1^VE:+\VL:<$`5Z9DIN9#PY($3V?
MC$A#?T)*"4_>-7@!E%&J]^P&@^#Z%\,Y-UWA@F,KKAM5V3^J#XA]*L5JAD-^'
M=&"Y#(LQ,1T62CK>7;C*&-Y0>D88>AO<Y=K]=JB2>1+M%#*;YIT8`UJT0J6.O
M#O+3BBH\56V<,+(3)V@NZTK4!@L),TS!>T8KD$>:?NK.-TULV2=!`#R0>R9'N
M?0[CF&-+*_$%*>G!3M+]\$LAPU6O1".F"J<):/YMVPNFQ?)B&UPI`?>[Q3O$^
MF";`I&,$;+)NH9<HY'TO15FSA(UAUT,5":V<1G/I>RB9OX&D=I9`-#$@SCMX=
MBK,H)&T("7P)SQDL19YT`#C')X1L'?F`5"E.8S+CP@$\[#T``KT2PIT\D9!U0
MP7T\.=#A6BW0\1.-*/F!-X'@-.68S([E:P`<FU,HQQT]`.7FT%9I2%7MB`'0Q
M1@B;*.8+,1,U,&5T3E?/#F>)'#+3<_N6K]^]?%Q5BZ[U^UBM`N#MVL!YJV5TG
M*ZU6,Y14JCJ1.?FUFA=E)[N(<.LB>RE")U-W)$^H6K"FM^M<N/**&:UR)[:MX
MFKLV/EA,1]+P@H=8:]3K3NDNA*8WTIX#0AU\:7VN3]Q>$9F<&]%^U7^W9JQ65
MY0O7BQ2A0^\I[4H8V,I^%Z_9I<0"XE?<<^2P5^PT!"4\)4`TI*\X0%6MK2;Z&
M3')3.FJ'#CXP%KBS8-Z:6O!_RU!U#O#3Y[&98R]85&N>Y8<;*_=AF"?+T$<-K
MV;;-Y^>&%@J'3NM_6DCU$9LPS=BRVQ3HGBU^QVS>^%NY9=IESR:$HH*YLWZ45
M:WAP(CT6@>Z/TFU6>*ZMODDWBOHT10J4`L<%##]?LZ,3</'!4E;=H^S;ONI:[
M+=!A^3&^W,;P"_]N^HQ^R`#C@;DQI`QT-6^>7FU9PI!':E&IX2#GK(H6ZU/2U
M]<&IEG;BZ6F9"U=VI[=DZHY_'5"`SD;GG$R(4OK_G0,-.M-JY=O`!C#70JSV!
M<G#5["VN"64N>;>$;V$5GJTC8CC+W+X+*\E(A\8UN]6WD,Q5>F%'=L@(5*Z0;
MP:;ZMZ/%8[A86Z_N!@!7WU>'CQ7%9X:U)'_O:D5QF-70Z6>HRXL@@AK\+&C&?
M[ILV76#-`Y..J*?/:^3QM67SZ.79Z&G53[O-L\PH?"E"K?-PJ`D('@`@BM:D4
M;?'N,'E9DE[3047C.B6#BT$<.?4<%,O:6`.VRL>[U4%Q.<CBAFBSM#I(X"2O8
MO2K!I,>Q+<`R=8V"`3V.19]!FX[)BNN8`*E5\37S,W73C,-%?3V8J]W[ZB57X
M?ZO8:WO"=2(@;W#O&CQWOJ_J"+@%1!<M,1^7<C_U;P0+PJ\*]_"Q!YMR#OJ@Z
MW;7W-0.?<@?ZE0#1G,0/1N0.`H&&OU-U5Z=WN_TL]PP!B!ZMR!_K*!=O8;%PB
M"5[$+U[D+_04)/>W0?LW(']?]A0;]KLZ+74Q!^OQ06(%.AJ^Y`&`D9[-"[,QF
M]\-G/3Z0QN-.VO:P$O:QZ*%#2M50PX(!F58O=?9<M?=B#4=`N^27`L&J.<?)0
MK*56U]U?KMW;5"7S4&Y4*$&++=0Z4OLF"[C7$D^5+)+*34Q#7C,Y-U>_),L&`
M=LT<`.VDG-\W\:%XU9]+D3*?,8)6[DH^#0^LG$=O3TVK^*][[5_IN7O@MS/RT
M<]$EN5Q*"I*\A97X&_Y<I#<-<\FHQ7+)]=E!"2Y4<LA14@6R0`]Q?JMU=AQ6G
MONM6.W#7Z&-X\_)Z473I\.F#;"=(Y`0G&=@>/<%%DJV`S098.N4&13KE)GPRP
MK0VV:,,U$]/(I9R3*28QDC.2F=0&VA'+JTZL6I:?U3-EU@^4/AWR1:2GK4EIH
M9<M[LA@%R[LIWZ+]JU'/+JICK/P8DED5$HO_D;#QAK*L9H>_#JT*+!6;GW8LM
MX:@B@U^V@42Z2(*Z6V]ST:E4H"B##C&\/-1'+.9FPQ*K38=+5G(934H]`FHY?
M9@RF+RD1]`T96F'E/R&6/C3?W9;$$(:%J2;`SI2F8>+GKOTP`Q.=?'Z5S=',<
M1C'U>&H2^:M%4^JS<Z<0GFX/,?@"W@$`6!U_DI0<^JR\<8W]&3@=>/HP??@L,
M"DC<W'64NA*U%Z(,$OZCS[7]3IT;D`.[-`C']=*'TT2;M!27`LN%F]5ZCRPPJ
M"CD9P5`H/3,0F>`B!,\BA&*;NWS2/QZD$LGX9LA=4<F0&1AR34R;W)$$9V8*7
MML_=DG8*"0Z[O)`U%O/ZM?);\&"",A^,U(,NDQQ`_=Q.1[7OMV+2\E6;>#[;?
MUVY]Z63K9S]QUB$@1NPM:9E6U%8N.F)9UD.@A95WC9_?![:%H:.HU4=;[,$;N
MV9S4Y4Q@3YI18`=YZ4=7F`^SMQL;MN09A"_;U,ESL.#ENCV6X)8#3N9Y;OHU8
M+#6*#&>%/#PHWNHQ&(@W@<P3J.W99B:,?-A(B.15+V/3;9#@Y%-O6XF61@`'%
M4C0R5>A436;(H^S_BHIT^LJ@SD[<^]-L/:%X071Z\P+*H,:^RGK4=Q7FE$;MI
MN]=[MNX;5EHE!L23!2;CBXJIE`B7Z.3QQ6*3,3178:!__PWD!O8L2[W;?L6G5
M,-^O8^W_:&^?_0WDO2,H9UN4A:%23(&P]<&?>?2`&ZH):/^0!7;4]M`<2`REU
MHBPDJ+""1077AEI%HV?5H/*,6I7U%-Z&$6R$#<TW'0*^</T!EMDIEF+)*298(
M<RQ8DFI]=RZD@%QQ*`Y)N+THML,:1V(8_B6!3LS>F;+0"V=66[-1PJU[PC4VK
MK30;);-.3)1_6YX,XROW)E9&)V2$,(H/_C`^-0!W#)!MR.X<\9+U"]H&B!'Y-
M#,B4K,Y*0Y69:LLR_<URS".A[,]9&42%-P,:T_CH1S?4*@,LY;$(1N=1'V9)B
M9U#V22/R+-/ACIWN'A`?EOF"`8&DZE@4'RA4SQ>1U%<CRBB_0V+0,5AK05G1#
MU-G/*^_R7.`]_"]3G%,>ZDYDVJ/8,_I#ICA<_!0'GN3G8J3X6$9\U!22QAAF]
MZ`=ZM^"RL%:F(FP>%=81R02:#O2/`@P8NU9<21#0'4XTJ9DST&TSP#K4$L3@"
MXMFHF#1YY,=H#AC0(0T2UV%Y?5!.S20V_ON$0DLKB#=4T=):W>!HOPD0%0HTY
M<"`<0>QOR`C:1O]14M1&5&V^506A;TJNEHTW&_"`*O!)*3M!DYL=8;^"ST,ST
M;W2>!2*:"`=JA[TR,10QH_TCS;1F.B2&WIE!)I]E'L.2M28+C(\!J8,O"@A[T
MGM"+:&MJ"WA)EV2B".C'F';5U:&E"%:IA.*^!TMC5F,&+>F>3.]F6"8%_]Q)O
M*$-R9]?6\Z\S^-6DQQE30FBK1<+`;7+32Q-8G8!3CWYL7O`-)EU*3TR2IQ*_D
MI0&W$:K[<0N8;5^W8:]WNRFD"'^>BK1#]$T3771.;:?SY?(O+.=^.84;"4Q2P
MYFZB1&^%NZ`WWRTLF:_WZ5;P9LBPC(-L6$S,9-)'GS%5'3#':&U]`3Z*^BRD*
M>V>06_^OW$'[<\?<ZFN@Y_QH.,&0L=!>Z]?30(C1H%1V64@AE&F(9D`PI,Q[Q
MID!S8[@7_S#M8%C3]VMG&A5$)M7EEQ=-G(VB`P,W!(>/U%Y@2P5B+JX%)&KV4
M1EEBFB@GR`&J2:*R!G-L:8K;>4&-$?FQ8@N[`RSDQK%;5&VX"K'_Y=K!?2M?V
M.EATY-)G@,9ND,PGE^+4H)9^HL#?D'S;%ZY<MX+=ZZY\+8*@L/7V7Z^"M6#I'
M)<&0D`%)G2XG59?^K:-:XMU$:=I/.D75-DF0;014?E$TUD:@OE(\T#+,LP:="
MD*`17H0&]"T(4K*VQ>$#$Z(5M9R\VTB6'DI;<TO0`_^AU(,$0EL$(/0).<+!.
M]&@O92&#X$EH']L\ITCM>4X59.9+,U^D\!_&:BCW)9?IT#/$G^['[!#N/"P1?
MDXF>C0NG#=,,RQ!QQ#@':81962H/QTPRTXLC88QLE0D$L6I=%HI);:"AW,MNQ
M9@+:_#0/HH91QI-P9+K\8)IG@LWRG(:<7H=1&H5\$A"@?B@$K1>L?$Q%MV;';
M7V![*29+F4"@L\.33$);#*AS9P\&49Y6FS\B'P#,A$P]^=L/2LANK`Y8.*KXJ
M\#V4%M`8'.ODU'"!D53-M'&J=6NT\9#*2;E^((5MG>.\7-1"3&@60D[,)":SR
M9=)3GV&&:V/2:!\6;<GQI?[<.N?YO^4WI/]K_HP+^3_M((A/LJ0U2'$J/S<LW
M")D9L3D+Z/),[P)'WX+2-IY`]\VGG;?3YWC-ZQP-TJE$Y34&FH\+.",:5P=AM
M];+DY+699T.8,/RPY'-]KY?`T"`56N7K'VL$QV$`CB$%B>RBZA27;>1FM$.K3
MK:G6X&*`K""FUI`N],QI.^!4S!8OVK3+@="2H!L4$;-"6^B_7O_>GL].O*A8B
MGRB02J)9HW!ZBA=E,0'7:A.8XJ->A.NWK*[`]:`Z91$#9@U<I.2NFK74(Q6%=
MEZR<;EDS2O9PW5F/%*6.ZI0N.:$KZTQ._V.;X"_@^KP-M,:,^7EA.C^M2A(.C
MR\<2F4VR%@J0G074SK"ULZE`EFW->5.B[-=;)@Q'FB>2"C[0;]G.M>[8#H"K[
M"=1J<G&/="SGSIOVOV*@>AK`5]F"+)88C7KK-`)U#U9?D@8^D`GIDC(T\EZ;<
MBZZ_W:T>NTDI@B6OBGDFF(5A0#7X;[O;=N6[OVN^MI<"8)5%G4AZ(_!L3[]H7
M-;.HP,E`$QM$N7ERV6!IISOL$XA8B03[,!ZP-KV6%Q)>F(@X!DKAXN+BW#Q1`
M*EQ&[+B9!M[@W`-N5[E`-P?3,I2FV)_,@ITD%5%#6"L<M"B9"#+?%$]@+"4^5
MS;Z0I<M!!EM4'Z(@#`OW6I<S'B_\5)-T-_`<]-,H;S"O@U1Y+^F-EQ?E`K=&_
M_-L30V0"Q(4%,QP_&(2QR%K.I`!B*!0I=<B8H:EFMM7S0X-3DD%$N"TSSM[KY
M`F>(<"1#C:%;5O.S.Q$&T9,>*X]-/U/3:%E_0QC-0+M?O9A.U9OP:(M1O":+#
M?-M)=^^3/CA@SS9F]>FK!4$\AF[MN"'VMT%HD+^04]TL+]J8;US9G>M:[\2(2
MNU#87]^=`/Z[ISI4$&B)0Z=H]JL[6`W4R$$>.]ZB^.R(X'L3IA'?2`9@U3%L&
M-4BF5R$2T.B<(JCW7YJ9>=DW,P-2`"-BZJ0!*'!9ZTV8^2>4G![;.>B_5;<RA
M42_`F42_.+<RNVYNHI-B3,TLQA#217)DF\:#[=A.SF$=\$X'DB6TVZ#;+%@SS
M!HB>G,+RH`EQ(A4Z7\J8P9)^_Y^'S\#+1=%$8,2.TI]B]=]J*A(]:+<:G*OSA
MMQ&=0A!GEDB0\V32*\@II*<./8!?0GJ,_-+ZTZ/C@\&N.MMJ2H=DL+B=]P@C\
MH%8<2GC^*2S-0F,^)K5"7]CDY8<N\RAFK,N]$5A1-:$9A,V(U@@JGQ0MZ"RX4
M`.LDL&W8-N,/-;$QM_Q"?1M2KVF?]$N1/32TNS7Z=A?3F+9B=R1X6JK-8"I/%
M0^4TQ1.J4T&!ZQQ:PW<+8":#_@?SZU?8(&O"E?0('8:$+=OS6_AT,[3"X+8&`
M%]:L!+!KLO]`,F[%RW6H;W3N+8WPG0;:U%D*-G3U,N[LONX*_OM6[SJ4"ZUV`
M@E8P":;QL(>5,Z(WXM9*,%>Q<O8+6#LN5\+O*6)TKVQ8SAOAU";^B*P"^>*'"
M)#/K)%@OIK]WFI`"TL*WG!Y=N3"DT=2@+KJ=_HPZR,O6<Z!/T$EC+IB\VW:FR
M&R-I^E<<9?]OPR+>M.KJ5S^E'::':&P,'+6P[!JU>PG`]%3YQ&9I80CA!C2^M
M0NXL,"F<8=9(G-I;N(S,;L@C4)2X%VV2-M_"A_DEF\JI@N7EHU.+T*JS12)U<
MTD9]Z645P")%N[V=K$GTT:-024+A":'5(O=N&A)]6U)5P;6E)QBS<*;BDTQ/Q
MM35X\8P)6:S!AVW[^T_W6?9C+I4Z3(6"74SG/Z?UL7D#XBZ(E)(58TQ*:,#`L
M:Z*YTUH'*I592"4/6!-&B-J7%.!BM18?<7K65H)K.<:&G%2\=1&(K,4JO?Z@Q
M?P*E$J]Z``EUY<VE*N-,*Z+'8M*KQ?6SWZ&5PVAZ9A\LV1V5'HKV18;LX_Y&A
M*3+#%N_$OC?>P7#Y_26Q)O$$D7D1D]8T59QOX5[N'`#&S!7ZK3BY"65K'="#[
M<<N:J=DC2,L"4%]N0-A*"&$*F9P[@]UJY<[+]ZPS4O/0PAD0F\(-WW`#DX\D2
M4-$>7A5;M?=::K>@^$6G]OL8RQR^FKNVNWA=PTW"CNC-/MRB,@/J!IYIMTM..
MG@"#=\"F8!IR,TI/Y',":1,.E*:M0"4Q:DI.8Z`F<0W=8RA.#X8A`\,](]HA,
MS$@%V98K#0E)?TW<V(PLK)DJE`3O5'.]\D1K>O4J<3BP_]J(DN002J=Z>>B3=
MFRZ",]?SNN4^?I->6:!T>7^B[!X)N3@^SRS%[9P1KS+YY@+!;.=S`64.)<ES5
M\L6->K-KQN-RU\H,FE*7S5$H3RH%SL#)\:UV4NG--2$`*#J*&T"F'/%(+1'*^
M:(QN=FB!29^G,=-$`*..:BB!7;'@TB&RI<'AMD6$55:1Y%T40U0K`-FI&4W<,
M/ETB)3_:BCK[2*F9A/&O>/M3N%"T&JP=%*9<DS"<V4NCJ0G!T;7BG3ONF?92+
M+L4X$E$ZY_CJ).8]BNRBJ"NV\ZU]ZGM6!G4\B:9$!1H2@5T``5J^;CW?]/#Z+
M!4H+45IS=30&)=C>_]&\3VB`?P1[648XB9"_'(0?&T0,D2SY4EV8B`V_2<<QN
MTB@1-]J>Q*'MM":2;03MA9%QI:#J'I"S0@K;:(GIZ'?6:$EX4TU`HN19[;0ZF
MVW>19ZJ4%3J2060N:VQ)Z!?_=5^]VW;(HGS&/W.E;4LPWNW#:=YF8RO$S'(-_
MB1;NX;0`5\-OWVG><8K+IC6&;X]S)N:OMXA-,2EVT$R39T$.!->+8DC3(.V[0
M_9?Z<73T>8_UK0>`@>$.?.8V`AE)E_FVX$9D7^&`I]PB<#C<)0PG%=N,/$?W+
MS5:>//TT?2@'!,S-'>4*^JSE@!/U3^_`D^S$HX<]HG)&*(60&3`R*`A]*3+X0
M_U54@TV^F[9<$\"\DW?$'#K5?KQ70')5?X>50+OD]0QHL6A[V%AJX_)-6A<X?
M@>,`Q=C@9#/&16KMFQMN06APTS7+&7A*2C'C>,)>`I`GD+3/MJLT8#>K$VC0I
M]')R4AZ/'0W(PFP6K\W7-OY_B'M0I,Z:(-S:="3^6('"H1V@4<0JY#Q6)H4.%
M6VTCCM)C*[[[<1[)<QG:B)*@C96;A`-DC3I33I#9>)[),*+"DP)00!\(9^Y3J
M]>1:KD"\Y#F'5P9DC]XU"X=8'<?":=7A,E%\A6/<&.\W<O*:8AL)Z#@.F9H,%
MR=X@\4?H@4B*S.W:"5%>6&4?RM/[0#!*MP9WM'<;]Y1MD4=D["[1F<.M.WXV$
MVAI/\'LH?F\'I7V!(I@5L#TR%88X7V!579!+GAG6F!S'/H/EDB&N^\Q-C2K^2
M;_+N3_+]PJX;NF]T]D(PRAM]R4([?RR?G')=$>*[!\IV^<.0'ZEC,Q]4)%OFQ
MN?"]?LM7.U`G]JYDTRH'LQZ<^,=GBF;FASAQ9Z."32@PW+-\\.[68><.KIP[H
M8CG3#IY)R`)$S"28Y]%I3ZI%JP;JW!ISLT2?K,/K0<9I>O^6`=&O@=HZ^N`*%
MQ.GA(`*=1U"BJ=O_8A3QE'S,J!8*,,])9_6^>4K.89SB:8RCC1!E-[/0(!LLA
M:/YX%0$!,E-W^RZ;U'W6K'VK?E8%O]:-9+/XDHX8SDT>VKUBN%YWE4/O!WT*&
M'+2T3@]_+6YV6^Y`^B*%T6B`IRI0YVQ_L<TT5P[OD+A4?5<)2GT%,3++";]-5
M6'UJ&J`#RB"DDT9=I3TU);'B.G3*:%,AV3M$&:5M%((-#TX4>Y;;=(4#8H*/5
MVK@CS;Z9";96O150'+P)2O'+EUD*Q7YQ34@8MP?6>()PB^%[7<<'3IV1!F&>C
M!&K^AAWV2#)H28N%KHHVG42@'$"X8QIHZD9T.D/_2V408DP)4TP,K&230@>#9
M.'WEKYB\O#HB3U0J7XG&>/',K%<#RQ&5N!DC?1]YWF&Y5-4&\R-Y+=W,+IQ4/
MC#A%V3R+;C5AH8"SG*BH)=,5]O+D3PCIGJQ"/0[S8.G."]/'I#1.L3[J>,/+1
M"]FH%C*AS8PX`^X&UQIKOA?6MELWL!TNT&\,&6MK?IGQ`P%-4;@[C-87.#T0<
MM<<1[3:F]8H0,@3J&6,[W[H?BK6M`B-M:Z"8'A&-W40IJ15ZE2:SZ=&EH1G5O
M36A#0@[["FW]\$LG!0(*>/.BVNXV:.=("Y,W5@?9V?F`[,N=L)(F*]+>*T*,Y
M:]VD*;F+G"T``F8^.%T=F)0:4</,8E2N_94_T-N&C*0$OVX0S1:9ZL#DBAX%N
M.S03Y:;K:;1!DARPI2GQR1GA'QPE8)1YRV<NU@&Y$"<(!.S1^R&8:4,5*-ER;
M]=N?>[XXCGD!6MJIM#&5"TZ\1FU)EAF^-9.6%[P98%H[7XX8AZ^@E.S:R`>KK
M+6]@GR7L):;T5U8ZZT<VW#!=%9PK`3PR,M_89Z.O&,V<:",%&Z:WYD+*G&3MX
MRDI(1OK1GQ,*1*9^8[>!=4(1_*RL-3M1*QH_&@;DSJX72.R9Z7'-:(>GR\1KH
MBJ,P:A6;V%2.&C"A]S4;"82]*'NE=A9-J2=(0-I.!L-@GC]J[AO_>RIVU\[HN
M$ED4$2[T(!PI]:X*6H-[#>:WH;&`J477WZ0;,=_^8AIPRE;)3KKV+]ZK4?R5V
ML=3>#L.(^K>2[=:Z<C=>5O=!DP\8^B[]%4)X5!#G%E3UU:H`![=D;!!WAU`_3
M!2QL_5Z*_38/32&Z0=^OG=%?#8]R4N.^26O+P;'^U<!H>,W1=6UB7E'*(0.'S
MQ-F#:PCYIRD.+TLCF""%)P*\M=ZU.>^.V"#LGF/CD*)"81Q!FE8)(QBB<ZR=S
M_\YTFS$$@:P_G*],Q6D*7\:)Q0I[8]5NHJ#8)4?MB+UO9)9#MW*]DABAG>G@E
MI.'5C>)#9W4G"/7ED)(V%7=$&-65LRYQ:X5(4"L#"P0%ZZ7J7/ZV!'`['<LU-
M\-=/(M25_92QNXK1HO6K7['+H''ZM3IKVQ7]I>$#S6'-[\.?>=WMZK4#!U::9
MHWC?$FH?P_SAF>F9)+HQ0TL0TX+=^>#?ASU-JR>9!(S#T#%4N0>%3R;?^QPNI
MM&^UR-FQA'BJ?@*K^IK$7J,TYES143F1$+HZH>S<FQ(Y$1QSBDD14;RWNUX'Q
MAVG-0C?<;#MIG:<SD$^3<*45"@H>(\C8N-0:4,07/HV'DIHJREIZ&"<B)/282
M[LXU)D4)+#K^C0(=XY-;03##92M[59+,2I]GT-H%$F:E"OJ"*^]J;-\\(($DJ
M4#;WDDSP(E+O+Y^\[E'O0_?;[UC5(@+9FD:HW#\N?2&%0`F9Z:I)FB6\=,PTU
M#B]RU=Q!N`<CVQ(5,0#EY!TM4RT6?U&^AE+;/FSA=P=O1@PI::S:<<T\,Y%;;
M<,@WLZ/Z$%&4B@8Z]K;%7I[3V$EI?Y<00I0!9=)[V.U*B<+94ZK901CS=-Z^<
M(QF(=MU!!"$<IG@`=0G@Y6^#MP5T\',WP6+-U/!SM\'77^Y/!3[]P5V2[G4'B
M+1")!FA<MW?M`;:Q_*H?L"KMS%<]][\.5WT4-H.'TEGJ,3*])H<F`YP]5BO<L
MN'U>`DK1Z?B0ZA"G]_3D-BC'ETH5XU6X$S*_W32U%R??>]7`W*:IPW7I'.(N+
MP=]]#KWJ_M4A/6^_`589GQ2P=\,S+8I([QL\7I<PYYLR3'6+0[1Z+P>U(`F4T
M!31DEL174"LO55JMQOZ:UK[-!=K3_=.63)4>ET5FE^N1"ULG]9%$!&OJ,FNFR
M<6+X%(RJS;%DDPFV$RD^N%D][%L_&",II]3@-?*E(","3,G==R'ZBOBA&Z*^)
M"T&7?IIX=/R`MRVZC,])[ODA(F=D,NPV:XXE@E26@"C;O'>UGDXZ_(:2U-3GL
MSKH=;0I*JD9]_2W/4Q5=I)39I6$)@8TO>[+5TV)S.6A%SJ;WX<JQ<VQY"*3<E
MCJT;=A6#L]:)Q_DXWN1WBWYM'!K8C'5]0!T(^8Q8TK&_HR<#KR`8_4.2VM9H+
MH_B,&^H>%AE:Z^8O#.[+PX<N+PO5J3S3C$3[L<<`E32?'-(F3U'S4@.U^7_8#
ML62L#+9JG+^JC5=GD35E"LI/P8.P#('P(K;#Y5A[;0N/\CK_+3BB2F+LC%&LI
MYV=TD&JLW@D4+6//-F7@DPV)X&47[AK`1%>2EO`5I0=2490.8G^:J<!BCS+!+
MW]B9;@M6G!&PO?"CDJI]3$9U_GIVO\)81)MY?U>VH&M?QJ?5['9A*S#*!:30$
M>]!V-3T&#RX,+U'#0W.><Q_HI)H/:XD=PU"@<I:>@M.X!YN<5!V8%,OF\ZXJN
MH]AAM==3!:PU*<>XQ($3K)E;01_%F\A6UU6<4N+[**_3>JL9,]IU20Z]M=0Y6
M[]YT9+^O>Y-YW?U[%WQY.'EY.#@3T[WZ]YT9PVND+'OM\6!F0^A3?5#PI=L7.
M.VS:<\ZZ;%I]QAZ<%FF@$2$/GJJX74\PC47Z]^W:P8F.V8B087!5S1`OA!XD&
M'OR<1BR-@]L*'K\#_$0?6KPP"3U[=\07_Q%+!-/Q`E6CS0<0,Z'/.,L[@.T#'
M9E8??S@.@M1O@C"`'P,M;&@U+:$(```,$@``"6'/&@``"6%R<&)A<V4N;8.!\
M!O]SO>YN-J4?Y.EXFXFI+RJI4%2*82NR%D%M0A'@/!G&_\G,YQMUMSN[;PNN]
M2/IS+(W!QRV]?!E34,;'B/PI/P.```#%[[[[[YR2Y9'E#UG8#FVXV[R\+S2K-
M*K?5U*5)3IQR:I5*M*#[/-C4JX`?N9:-5-%%4]&4#>^JPKO<^>3-J4JV`?NR<
MZLF3HDI4KK@E^\##IEU2T^67+X%"@VE>_+/Y3:XB]\&;M%_%FY_.8O``OY)IS
MZM<U8ZE?E!E9YM50.I5T#_$`\V66>K33F$NI7"!EP"H$---%4N2J:B='OZ-4Y
MJ(JE?'7V,.%EUC=V,7S[@%]6F3)*BWWA'F]$IP!^^`NR#@??@#N]T/W88@?OF
MQ\K;C4?*]`XTHBMG:5O,ON*%AJ5[H%>1<$+;SJBZ[Z?QL/1@4<;O`/O>-2F'C
M=@]S>DK'=>PKP@V0(V3(MNOXHB**N^J16]L1V.-:W>0%WU9`XVA5IZ$R-FLC/
M@O\PK.3:LMNQ8FXB9^4GO>8:?89X[SF)8+O!ZO&27\3V&\VL47QULV%EB*)<>
M"VCEBIB&%O`[&]QC0>,(3'#@RPXP1.RA.^Q$PXA/>0FRPZRMPH8V%86.8NU7>
ML5\6U95UQF#SS9Y:9?T:Y=54M(U'A,GHDFSJ,.T)\IOVE6\LU)S/N>::?+1Y,
MBCR$N^?7/D2L,1^QNJR&@WA$^E)(C]JL_X1X/]I)^^F_!?C:>&=%_$ZRG2?@A
M,KAAP&4&??=,FR\X]`:+=$BZOE;:9POJ.C>VA/E;=1H"5M"58::P,5N4J8Q*>
MX%\BW8MS[L"5<;AK)VR?;/$Q!"4'5*^ZU"W\2]B;X03GG<#[$7$?*?6(T:(AZ
M$?C(C?0B#[\H=WCOMP0Q1AQ/`N(Y-W"P@SY.BBG3)5T([PE;2-P)2E2S\>*V2
MLFNFD+R$EGGD*Z88UV\=,LGDQS#?H-O=SGHUSY2*(MW<\L^9'",R_^3'IERB]
MDV5<.JJD$Q.%]F:?GH._FQV\>OG&`7;!5N%5._7,M.[V1(MQ0F2&MNT:&TW`X
M:#;(=MHB!S5$B5UZX(#OE5W457DA.>6D,F,TZ58JR=$V?*=4]K3(<%B,V\]&M
M3R)SVXG/0[G8N[,OZK'8#L<T^86Y8[%>)=IJ_&^5S#MX[UQ?8E5\S&%MU;1%:
MAYG:$JR]A?<7$-XI=9$FPXX:V+]]+\;#OPGU']+\<+;N!Q:=A^1^-X*#6((C<
M']0CNKYHDE?^H1UNM&R?UOQQ,8#2?E(,C1/?]CX0]B9<#`8BW\S\:#"G_._'Q
M`M^\O`CY_:0^U?L'T?FC+G!3%3MYD>T"%^$)-/01AA3OK@C>#,E?<>Y3PX]]#
M#<"V.,TWP&1#BH0Y6SBB8O%W<9DW1F2&&$-.E%/2$M:>FN:,\OGJ2I^U5TZ9"
M4#ZR2W&`^_/)H/2;OUU!M.!12OD;9'+F62DB+</&\ZY\*=CM"3Y'G,6%:05MR
MFBE?&68-ISF"Z`N3VS/\T>RK6Z0I.5&CVQ(FT4K'[HD<3N%[$[LH3]X29YI5:
M;JR4W0I?:?@1%63;JDU>2;*G$[A8!YJI=!PA[>>:?R$Q^Y7G7JIDR>27+1C_Y
M.$4#P%BW:-=.S<K:\LM,W/TDKV_J5PCC3(F$-6[-^2N>?WPUJ]W<K[7%[.@C<
M).WLE;85[27$V@7>`NJC%FY7RP\+]?`@ZG8/!C%@CY&`VA_31C+SR:\]1OZD^
MVGU>O8TU?2T[>QIW4HE5%`QQQL,'O_%RV"(N/,\9CV2'.@`5'>(<=*J5SAQ<!
M2,+,`>!<<\>L;#;O0,05TT[Y$VD=(HOUB(@..\Y"=LV6O`.G="?M$3@7"A,>#
M*\%:VB']<APO\7`VRCQN(\35A(^V?;76>(=G(L?KGUV!?B,?[!CO.Q;1V0=#"
M',;!],0;$\3KC;O&G"?@$C`L(8)FA$?"&`FOPPW`7U^+$PXF%41]ECY851(MS
M-WP*>!(Q[2/A.=?`,Z_11HQS2Z-69/)OT5U(]D;'9]>@]<?;IEJUTSY-MGO<(
M"I8*)/"G(9?/-55,6"\:W_?UAKF30>I7?KV^Z<F/)1/JHSUHZM6G/)4?B(#Y]
MU=H#U>';K`J]DE6FC)+JU`:JIHSXSKH-=J"J(_,%M"NZ:9C8_61,-'WPJATYI
M*[-[06/SZ==1]'Z]&NHA"K;X=G'A[K]G/1)EERHLBR?MCX`^:35I0?[GFQIQ)
MT>8_>KR3OA*^%CD6V]7K9$BRX]"N%]QBNG&T)5UYEQLQ[I(IU<E%4F/$T+&"F
M5O5U/CGH.S<1_60Z6S@/]!#PN#O)"-_5_HAR\J%1D?\D1>Q1$2$C_0U,W(3%M
M_V1$N*$/_@ATN]`?^X#L08"\$`1_[$?/T2!'_J`X><Z7H2AA/ZOY@/RL.Q0A]
MH/A#:897^1O?B6XX_`-=!+?\2*CK(,?^`#A@%;?BW59SR^;5T2Y\ZO_T"C.G$
M?ST9BKH_]0&,=>&OS2RJ[[PY9R\%\)%W[R43V#F>WNF[>"]3!`&I"O?64W3W.
M)K3S/Q(AZ9*PP`1-\BS]AWYMQ&,H(&F_/["Y.L4WY-KGK3"=ORHZ8RP!AX#*@
MOWIX%;`)$0>!AAC=8PGYK-C]VWP-3G17;7M]K^C-3)HK]U'V>!C95:UZI,Q>!
MX#95OR9"N<G38C;R=$H2-'!P?IKA[<>A/-'L[/,+'1SP[/!?X0C&7GWAZ])6H
M(<2QIL/&21-E@":O^\GJDS([RY.#S/83:QCJ;%\[^B3--D3D>ZC$1[F60,=IH
M#'X0,TX>5GKKW0`[TWDI?7HET4#XI1^]#.FW7KEDM&%=TF^;;[.YUEX*XNM*,
MN>YN>Y>H2(=`^?L+S+S*?S?0&J1MH/5%#1A@+4/LL'!=E3+F7@,@Z=&DZ^0]P
M).G1)7X\/M[/.-"NL.LY9.E(6\)"U)_#K[0"HT"]D,9)\#BW0UX1!2$'FI)O9
M/:B#$OBO5[`[(CW\46*"O3^J^]!A8BC+WVCR)H1;=BKFRA'%"PA'>0BRT[]1N
%$MEBE`"O0
``
end
size 15080

From crash!minyos.xx.rmit.OZ.AU!s924723 Mon, 14 Jun 93 19:55:10 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 19:55:10 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5QcU-0000m4C; Mon, 14 Jun 93 19:19 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA24739
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Tue, 15 Jun 1993 12:19:21 +1000
Received: by minyos.xx.rmit.oz.au
Date: Tue, 15 Jun 93 12:19:30 EST
Message-Id: <9306150219.11673@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


The iconvert.e source. Now handles LABELS, instead of ignoring them.
So now you can go and convert all your '.i' files (if you do, post me a
copy!) or wait until you find one that needs converting and then convert
it (my lazy method :)

As not all of the '.m' files will be affected, how about posting a list
that would benefit from a re-conversion?

I'll start.. dosasl.m and arpbase.m

Son Le

begin 644 iconvert.lha
M("LM;&@U+5X+``"I)```NW[.&@``"DEC;VYV97)T+F6UU0A>?+O5IN.UOC>/J
M@#VEEP%!`P-=W-T&G<&")"P:4H!'=K;QXFET<5:$BI(;AMR_&[__O>I"!)FM+
MN21MS-F9=R[DV6R7AWD7C7F>[P]VK;;C>UXR7F7G>@K\-0LZ<0A,7I;@(XW#=
M"X4F>%L/CH(@!@(P2A4;H$8@@+EY7-!&W67,[129&W"B.-NPO$8=(J3E;=8?H
MT$RO-9W"U#>N$F=UHK\$+#K4!*"@$=UHE!7^&.@3(\^)E'UPD:+D;=;A;#[I#
MF`^7.VXU`)$7WOWJV\4!'L\)'LA,.+!CMXL>!74)DHY'WLI)Y?45G:AT9BP5G
M&YZ42!NE*T*D96&7WD*05\%QYRDM?7]G.0%!?SNF#L>&UY%;!&T+^3<J-BM.:
MZ0_]X]J=.!H'H!4P.Y"6L\/I!1R6_2P[S%HP)3C`W15J5H"$P@!7RD)?M;RMS
M\$!?*1UXCCP!3Y&^9UY\K28+5"#18(2L-"!3B=?\A#BM"E9<N8'0L/OL:(*A^
M,3'.6`2O!F89*8G>LA`Z2`'NN$Y2D?+D*^5UDK53M#+[SW.9T(+93IH4]AII]
M#;@\7CV@30D#V=]D'V"Q<[J!<L!2%PEB\MB3=8REG*K7#^V<'RQ[Y,7):P8+!
M7W)XN2WY;6`/T(3BY+ZZWD4VQ\JZV'$IXJU4/F=^`?`"(<=5P<BRZRJ8?N\LC
M/Y7QXA_6^KOC^N!?!YA_>]@5M&^%U?`;T8E=_S\"9UO,-^A?S*Q>C`8D1!5Z=
M=.,@9-^U_'DN*W5*_[:M5.]<#[*5JLZ<'B%:(.%'OX[!E0(N;S',;;HP<\-:N
MK5X[`*)>6\B81A[/&8+"#YIPJBUZ^GD<*ZGRY\B?*/X`FNJ54W&W2A^@E;']D
M,3IWGP+VPC0;=HC#EP/MPENT:$4["'85OM^VN3Q?K_9^KB=XG:`A#X0R'1<P\
MNR\XX5F%MHKL,!O#E"$UB#+&`MN]#P>$)):,0^>>>,-//>;[%??>?HH<\D+]N
M129"63'H6@@M(?'#"_;>S:*)_8FP_S)VK]\0,/?845@A?OE=1[DJ=</1>NQ-8
M=`"X]S=GU)Y,7E56TH#>2D+*&[1EJR2)Q`#U*MQV%)^6><K4<ACI=#V`=.:'T
MTQ'=+<K=1B620)@ZBPHL7I,.4JR20O(F#0B<$.`*X1!0.80CG'CO\L*+YHUFU
M37OW+MZ^KVDJ,\8`:D@=-!B)82W-T?UVB5MQZ`J!`&"1'<##,ZO\(%Q==F38%
M3;:X32"R1X#-JF[GRIY$V4RNM)_>5]XT91N7!2[:OX54$('EYV83^)-JQY\6)
M`F)<TF4#?WE3Z7G^<)'(I&Y(V5GNDD+^AMWF'D!BCFG\4$^H$;2:'2"Q9:V0L
M9+;),UA0&*62`B5A3-2%BMD@?(9MQ+/E!KY,VX'N-,$$_1&+"E440,L5.L2X]
MN0%P8!UE4P&"RA\K)`?<'$JJ;QG(^1'*,R!JX>.E21]@=(+#;)OSP\9AP?D9/
MNED@-UO7=(519"!1(@(0'QJI1\S(&Z)HAN+L/D8-W%)Y)\0?/3GI=0`I/LZ?/
M?XY_N*,;#13K<W:U45Y67\\A/C"08@#!@4K-3K3#U&C$OR6Z9&;2UP4FW11O:
M3]!1/67R$S4Z<3&,T?D!0@--*DH9QTT:(\\L:WQM&#XF0J=I'T`8POV%(TR#Y
MUCP.Y<U$%/K<:=#?M6\"]"+AY/_&B_D?5&UF4:&C.,,"VF7U*>WT%_IGF-@%E
M:62^+^:J&[3%$=BVOTCVNTJ5A0"K5X]7I#HVCB$)KAGV*%5!#HZ569%#S7ZVG
M!:D0.+3NU#ZVE#YD-&)J\Z"`"?:XGV]_)5>[03JAQ>4ZQXL-@!'[I%FO&[;GS
M=U1'<-WP1RIP;B\D](1;ZSAR";930R)\.8//GA"GP0&4F90K6P2OUN4_^BF>C
M]##B#?_5G^P*WV3]:>0'@M8%@Y$[!'N7^8<S9N/LC3QJ?N$'4,!R'L#619("B
MPDJFY%1<*E^D`IJJ?\(EM7-I,V$:2]+UO8K?![%;O>Q%#OW2%C4&^QNE;PD)!
M%0_R_N^KX^D0!R8Z'6!F?>9*%C_!%8(RDR:)[O1D.P(*\358#A7$]1,UL1[R2
M8=M>=\$6&PC`L,,S+,=HGY,S,KX6WVB)8NG:>UK,:(3\W`!170#;YLO9<S$+3
M?*>Z:C)G;&'O?=B1QB64<^=;P#L?T#P>C<E#J_O+WT#\/E7P8O\E__8@--9*1
M';?O+_T#[04Z/R#M[YAUOZ%W#\PY=>_\FDW?FAA^RJ40J^%"K_RB0$UA+'O^4
ML9ZZD:9@E[$'&,BBU1,,T4+)@,*"&#-9>??#I\=">75.HRCAEDJ$45IU8:TX^
MW7)30`C3],C41V%&=7-4CQS[L^S'\^2?.^%(+-QSR(#KY^?6R>\%_S,RC\S/Z
M\C+<5]%O?N?_F8W:4KB[*FP4!O75KGM]805V_<+K6[^.XKW#6/?]OKOWMY5;3
M%W^V\M>\/=IB$V>T&G^`Y=QK6^\=1DO^YE4KJ==GU+71=](5-;KC/:-'#W4E:
M'F!$^8NFDHC[`F(#XX=HKA1H@I>Y>*H;P\[>8F4,FN&17-4+T=&TZE^XF[LJ4
M`R'P&D$+080(U[>G72EK"#7PDEB:K+3!,Z>+>5:$7806\&B*WMD9;-6F_&I3`
MC:`HBM\DDY#(=GIT(@*OU`09%>4!V^H!'K@.!=U@[^E2[JK898`_\64^D4`21
MMPON6Z*4P8;)K)1`=$<'69MGBNI#@O!"XH%C9#7B:XN6@;(@(%$82"=KO+1\(
M(O8EQ`_5D#13IA-YPT'FK#?=F+)H/L9;$6=(J04$UE>#W8M,V6;1BUCY//V0T
M*Z<.`=!K"F$L.&%I?/#%BV9,1L1'&$:14V4%DQ%6KJB$YSM4J1+ENI?)Q0")R
M1/_2.S,!>0Q<3H^-&5?TH6='?]8W6;*U@PE4-&?GA+1H&T4U-M"FX;!-C6PQ9
MMQYU$NV50^;L[,LG)ESA>]RC),.2H/11"Q?Q[=+ZD9763*+RO>>H!Q<F$^M[]
M&`V3YCRDI@9"PCY>[*6_C"F]0]^4GC/75E*C9UTR"?BF?Q=U-G"!:1T12/&R&
MCYN53ZI,IJ.CQUY0!Q/U)A?M&+@:D$,EX"34J_V:LEGL8?%FV?"5H-(['(E$]
MP*@KOKAUT;?ND&&88W(?-10CV!#HA$<M(5"X)G1#_I3`&KB*B.H<G9M0G'TX`
MN!-Z?/NGEB2I1=D:.H0,,M=(NTU1<1R#.4JQ^:UQ`0&&+OAK4*(B%*NGT&R/K
MLZ3L>B/ANNOZXO5CS9BOCW`(/'8(Q3[)N2*YJ0R5J5!./!A"P&*Y(1361M-TI
MX+A#*MS=K]3L=78$<EU>Q(.&J=;SM5VXA%I'4C)W<#!P=VZ.YF-#CV2Z7P>=Q
M6['G59GG:50G:Z*&,0KS"$D,^YNQ(7X,,(.+]"0XSF>OMH/H0#P;3+$<K4ZVP
MKOLU"H(VIT29[KU19!(YLER"8%[U:<@><!B1:EZHXQ;[W3V0R_]CV[XVO_1A8
MU]=$M'U^>_@&^,&?QY7I2_U2!TZTD@'OREWI8-O*1R.H]ZZ"?%+#,<S1`%?0P
MJ)S<=4=:;CWZJWQW?)7S,LMV@=.C:"69*%&X\Z6HB@GT@MY:SKKRK;V=QHV7J
M2'N<11;ZJ+72-!SL6?6-=(^&,;1T22C@=L/L'&'''F6`'PL4'G]&Q,1JK=2K8
M\`0^CLU\@6/CP=R^1Q[IV"AJK6SI%,<`!L)7\H4/L(9#!'>D%G#L&AG_U&^H,
MV05.&T6RAF\#.GV"AJD^0WXGWL_*`HR#583;$4,IZ\^P^VYH,3NT@X.L@GW8A
M_]R`>ERL];83T]!!IU-@JNA;HA545>`1BC'>?:!G)J_7B:'SSY:@HS\6*5:92
M"[,MQ@L+YR3ZC<\R=V.N&<)#3QKGC_,<==B[:AU(,9R41%'SZMLG=!TNZB@1\
4N#=DE&I(HR1,6W"L.X\U&KIJH@#GI
``
end
size 2945

From crash!minyos.xx.rmit.OZ.AU!s924723 Mon, 14 Jun 93 19:55:18 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 19:55:18 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5Qkj-0000IsC; Mon, 14 Jun 93 19:28 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA24810
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Tue, 15 Jun 1993 12:27:54 +1000
Received: by minyos.xx.rmit.oz.au
Date: Tue, 15 Jun 93 12:28:00 EST
Message-Id: <9306150228.12442@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Questions


Thanks for the SIZEOF=NONE info.. I've gone and changed it back. (;
For Wouter.. Pascal supports DEC, INC, Val, Shl and Shr. However it doesn't
support hexadecimal notation (probably not binary either). One extra thing
I'd like on the informative list comparison you did is Link Lists.

To barry, I've got ftp access, so don't worry (TURBO, eh? :).

Finally, does anyone have a good sscanf() proc they like to share with
everyone?

Son Le

From crash!kirk.safb.af.mil!BWILLS Mon, 14 Jun 93 21:56:36 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 14 Jun 93 21:56:36 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5RKS-0000miC; Mon, 14 Jun 93 20:04 PDT
Message-Id: <m0o5RKS-0000miC@crash.cts.com>
Date: 14 Jun 93 22:01:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: asm.e

Tried doing some simple stuff in assembly today.  EC doesn't like a few of these
statements.  Anyone know why?

/*------  Listing #1  ----------------------------------------------------*/

/*==========================*/
/* Sum a table of integers. */
/*==========================*/
PROC main ()
  DEF table : PTR TO INT, sum = 0

  table := [2,4,6,8,10] : INT

        CLR.L   D0
        MOVE.W  table,D0

/***  What's wrong with this?  *********************************************

        ADD.W   table+2,D0      /* EC says:  ERROR: ',' expected */
        /*           ^^  If I remove this it compiles.           */

        ADD.W   table+4,D0
        ADD.W   table+6,D0
        ADD.W   table+8,D0

***************************************************************************/

        MOVE.W  D0,sum
        WriteF ('sum=\d\n', sum)

/*------------------------------------------------------------------------*/
/* Can I get a list of asm opcodes that E understands (Wouter?)  Maybe    */
/* some tips and tricks for writing asm code for use in E?  *Any* help    */
/* would be greatly appreciated.                                          */
/*------------------------------------------------------------------------*/

ENDPROC


/*---  Listing #2  -------------------------------------------------------*/

/*==========================*/
/* Sum a table of integers. */
/*==========================*/
PROC main ()
  DEF table : PTR TO INT

  table := [2,4,6,8,10] : INT

        CLR.L   D0

                           /* What's wrong with this? */
        MOVE.L  #table,A0  /* ERROR:  unknown/illegal addressing mode. */

        MOVE.W  0(A0),D0
        ADD.W   2(A0),D0
        ADD.W   4(A0),D0
        ADD.W   6(A0),D0
        ADD.W   8(A0),D0

ENDPROC

From crash!Mail.SWIP.net!z92!n901!f607!p3!Roger_Martensson%BadNet Tue, 15 Jun 93 03:48:18 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 15 Jun 93 03:48:18 PST
Received: from mail.swip.net by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5XYg-00002ZC; Tue, 15 Jun 93 02:44 PDT
Received: by mail.swip.net (5.65c8-/1.2)
	id AA13378; Tue, 15 Jun 1993 11:24:17 +0200
Received: by piraya.bad.se (1.65/waf)
	via UUCP; Tue, 15 Jun 93 11:05:42 1
	for amigae@bkhouse.cts.com
Received: by f1.n901.z92.badnet.bad.se (0.0.1 BA Datasystem/3C)
	id AA28328; Tue, 15 Jun 93 11:05:41 +0200
Date: Sun, 13 Jun 93 16:37:12 +0200
Message-Id: <OD.6badnetOA92-901-607p3_18B9CDCC@piraya.bad.se>
In-Reply-To: <9306111133.aa15187@plexus.msp.com>
Fidonet-Flags: private
Reply-To: Roger_Martensson@p3.nola.bbs.bad.se (Roger Martensson)
From: Roger_Martensson@p3.nola.bbs.bad.se (Roger Martensson)
To: amigae@bkhouse.cts.com
Subject: Re: Modules


  S> 1) Are the function calls in a module always calls to a library from the
  S>  LIBS:
  S>    directory?

Yes. Most of them. You can via the EModules use the standard Amiga libraries.
(Both in ROM and on disk)

  S> 3) Where would I find documentation for library functions in the
  S>  modules?

If it's the Amiga standard libraries you should look after the Rom Kernal
Manuals, both Libraries and Devices.

Most of the FW/SW Libraries has documentation in the Archive.

/Rm - InterNet: Roger_Martensson@nola.bbs.bad.se

From crash!aston.ac.uk!cs.aston.ac.uk!nichowlw Tue, 15 Jun 93 03:48:21 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 15 Jun 93 03:48:21 PST
Received: from sun2.nsfnet-relay.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5Xjm-0000XNC; Tue, 15 Jun 93 02:55 PDT
Received: from 134.151.52.218 by email.aston.ac.uk with SMTP (PP) 
          id <26910-0@email.aston.ac.uk>; Tue, 15 Jun 1993 10:51:30 +0100
Via: uk.ac.aston; Tue, 15 Jun 1993 10:51:48 +0100
Date: Tue, 15 Jun 93 10:55:35 BST
Message-Id: <2334.9306150955@cs.aston.ac.uk>
X-Sun-Charset: US-ASCII
content-length: 414
From: nichowlw <nichowlw@cs.aston.ac.uk>
To: amigae@bkhouse.cts.com
Subject: RE:Asm.e....I think

To Barry : 

 Here is what I think your problems might be, I am a bit rusty on the old
68000, but try this, the problem is mainly in the addressing modes, make sure
that you know these inside out.



  > MOVE.L  #table,A0

 Try 
     MOVEA.L #table,A0 or
     LEA table,A0	(faster)


  > ADD.W   table+2,D0 
    
  Best using the above method, setting pointer to table, but to fix this
line try ADD.W #table+2,D0

From crash!kirk.safb.af.mil!BWILLS Tue, 15 Jun 93 07:46:16 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 15 Jun 93 07:46:16 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5auJ-00000EC; Tue, 15 Jun 93 06:18 PDT
Message-Id: <m0o5auJ-00000EC@crash.cts.com>
Date: 15 Jun 93 08:15:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: sscanf()

Ah, the unfathomability of syncronicity.  You're somewhat in luck, Son Le,
because Wouter has very recently revealed to me the existence of an undocumented
E function:  StringF().

Synopsis:
  StringF (stringVar, formatString, arglist...)
Description:
  Converts the arguments in arglist into string values according to
  the format string.
Arguments:
  stringVar    = receiving string.
  formatString = string of format symbols; refer to WriteF() for these.
  arglist      = variable number of arguments to be converted, according to the
                 format string.

Hope this is what you're looking for.  Later.  -- Barry

From crash!kirk.safb.af.mil!BWILLS Tue, 15 Jun 93 07:46:49 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 15 Jun 93 07:46:49 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5c5T-0000uIC; Tue, 15 Jun 93 07:34 PDT
Message-Id: <m0o5c5T-0000uIC@crash.cts.com>
Date: 15 Jun 93 09:32:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: RKRM Includes and Autodocs on diskette & CD

The following is forwarded for your edification.  -- Barry
-------------------------------------------------------------------------------
From:	KIRK::WINS%"carolyn@cbmvax.cbm.commodore.com" 15-JUN-1993 09:13:13.46
To:	BWILLS
CC:	
Subj:	Re: Inquiry:  CATS

Return-Path: <carolyn@cbmvax.cbm.commodore.com>
Received: from cbmmail.commodore.com by kirk.safb.af.mil with SMTP ; 
          Tue, 15 Jun 93 09:13:07 CST
Received: from cbmvax.cbm.commodore.com by cbmmail.commodore.com (4.1/SMI-4.1)
	id AA15583; Tue, 15 Jun 93 10:03:28 EDT
Received: by cbmvax.cbm.commodore.com
	(5.57/UUCP-Project/Commodore - Server Version 01/25/93)
	id AA26510; Tue, 15 Jun 93 10:03:40 EDT
Date: Tue, 15 Jun 93 10:03:40 EDT
From: carolyn@cbmvax.cbm.commodore.com (Carolyn Scheppner - CATS)
Message-Id: <9306151403.AA26510@cbmvax.cbm.commodore.com>
To: BWILLS@kirk.safb.af.mil
Subject: Re: Inquiry:  CATS

The CATS CD is for developers only.  The 2.0 Includes and Autodocs
are in the Addison Wesley   Amiga Rom Kernel Manual "Includes and
Autodocs" and are probably also still available as the 2.0 Native
Developer Update.  I am working on the 3.x Native Developer Update
which I hope to finish soon.  At that time, it will be available
for purchase by anyone (floppies)

BTW - The CATS CD is a CD-ROM

From crash!kirk.safb.af.mil!BWILLS Tue, 15 Jun 93 11:49:55 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 15 Jun 93 11:49:55 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5fmd-0000fvC; Tue, 15 Jun 93 11:30 PDT
Message-Id: <m0o5fmd-0000fvC@crash.cts.com>
Date: 15 Jun 93 13:28:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  Asm.e....I think

To nichowlw:

Thanks for the info.  I played with it over lunch and here's what I got.
-------------------------------------------------------------------------------
/*==========================*/
/* Sum a table of integers. */
/*==========================*/
PROC main ()
  DEF table : PTR TO INT, sum = 0

  table := [2,4,6,8,10] : INT

/*
                           /* What's wrong with this? */
        MOVEA.L #table,A0  /* ERROR:  unknown/illegal addressing mode. */
*/
        MOVEA.L table,A0  /* WORKS.      */
     /* MOVE.L  table,A0  works as well. */
     /* LEA     table,A0  does not work. */

        CLR.L   D0

        MOVE.W  0(A0),D0
        ADD.W   2(A0),D0
        ADD.W   4(A0),D0
        ADD.W   6(A0),D0
        ADD.W   8(A0),D0

        MOVE.L  D0,sum

  WriteF ('sum=\d\n', sum)

ENDPROC
-------------------------------------------------------------------------------
Gives the correct answer, too!  I'm ecstatic.  I guess since variable table
*contains* an address, then you want to move the *contents* of table to the 
address register.  LEA gets the address of table, which is not what I want
here.

EC doesn't like the # addressing mode, though.  

I'm still working on the
          ADD.W   table+2,D0
problem.  Anybody know how to make this work?

Later.  -- Barry


From crash!rcbins.mu.wvnet.edu!AMONROE Tue, 15 Jun 93 11:50:04 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 15 Jun 93 11:50:04 PST
Received: from byrd.mu.wvnet.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5fzW-0000m6C; Tue, 15 Jun 93 11:44 PDT
Received: by byrd.mu.wvnet.edu (5.57/Ultrix3.0-C)
	id AA18332; Tue, 15 Jun 93 14:43:35 -0400
Received: From RCBINS/WORKQUEUE by bins00.mu.wvnet.edu
          via Charon-4.0A-VROOM with IPX id 100.930615144526.608;
          15 Jun 93 14:46:16 +0500
Message-Id: <MAILQUEUE-101.930607090208.480@rcbins.mu.wvnet.edu>
Date:         7 Jun 93 09:02:08 EST
Priority: normal
X-Mailer:     Pegasus Mail v2.3 (R5).
From: "R. Alan Monroe"  <AMONROE@rcbins.mu.wvnet.edu>
To: amigae@bkhouse.cts.com
Subject: Re: floats etc.

>From:          s924723@minyos.xx.rmit.oz.au (Son Huu Le)
>Does anyone know a way/function to print out floats? Is there a procedure in
>either AmigaE itself, or ks2.04? >

I had this problem too, in fact I couldn't figure out how to use floats
AT ALL...
Also does anybody know a good way to fake 2 dimensional arrays?  Since
E only uses 1 dimensional?  I fooled around trying to do this but always
ended up locking up the machine...

Have fun
Alan

From crash!ALF.LET.UVA.NL!WOUTER Wed, 16 Jun 93 07:45:43 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 16 Jun 93 07:45:43 PST
Received: from vax2.sara.nl by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5xJ3-000022C; Wed, 16 Jun 93 06:13 PDT
Received: from SARA.NL by SARA.NL for amigae@bkhouse.cts.com;
          16 Jun 93 15:13 MET
Received: from ALF.LET.UVA.NL by SARA.NL with PMDF#10201; Wed, 16 Jun 1993
 15:13 MET
Date: Wed, 16 Jun 93 15:11 MET
Message-id: <E141E1B2C0005618@SARA.NL>
X-Envelope-to: amigae@bkhouse.cts.com
X-VMS-To: IN%"amigae@bkhouse.cts.com"
Comments: Sent using PMDF-822 V3.0, routing is done by SARA5
From: Wouter van Oortmerssen <WOUTER@ALF.LET.UVA.NL>
To: amigae@bkhouse.cts.com
Subject: misc.

>> For Wouter.. Pascal supports DEC, INC, Val, Shl and Shr. However it doesn't

it isn't wirth's pascal (turbo?), but ok.

>> support hexadecimal notation (probably not binary either). One extra thing
>> I'd like on the informative list comparison you did is Link Lists.

if you mean [], pascal hasn't got anything that even comes close.
if you mean OBJECTs with a "next" field in it, what is there to be
compared?

>> Son Le

>> Iconvert now converts LABELs to empty substructures which don't interfere
>> with the rest of the structure, while permitting you to access LABELs.
>> So now all you need to do is convert the relevant '.i' file, and henceforth
>> when you want ap_Buf (in arp or dosasl) you simply type anchor.buf!!

that's all very nice, but remember you're making a non-standard
extension to the language... the fact that EC accepts your arrays of
lenght 0 is pure luck: I don't support this for any future releases.
(EC accepts it because it assumes the modules to be correct)

Wouter

   ____  Wouter van Oortmerssen, Wouter@alf.let.uva.nl
  / __/  "Einen Satz verstehen, heisst, wissen was der Fall ist,
 / __/    wenn er wahr ist" - Wittgenstein
/___/  ->subscribe to the E mailing list: amigae-request@bkhouse.cts.com<-


From crash!ALF.LET.UVA.NL!WOUTER Wed, 16 Jun 93 07:45:46 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 16 Jun 93 07:45:46 PST
Received: from vax3.sara.nl by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o5xJl-00002UC; Wed, 16 Jun 93 06:14 PDT
Received: from SARA.NL by SARA.NL for amigae@bkhouse.cts.com;
          16 Jun 93 15:14 MET
Received: from ALF.LET.UVA.NL by SARA.NL with PMDF#10201; Wed, 16 Jun 1993
 15:14 MET
Date: Wed, 16 Jun 93 15:12 MET
Message-id: <E157DEAA60E07F9C@SARA.NL>
X-Envelope-to: amigae@bkhouse.cts.com
X-VMS-To: IN%"amigae@bkhouse.cts.com"
Comments: Sent using PMDF-822 V3.0, routing is done by SARA5
From: Wouter van Oortmerssen <WOUTER@ALF.LET.UVA.NL>
To: amigae@bkhouse.cts.com
Subject: about assembly problems

>> Tried doing some simple stuff in assembly today.  EC doesn't like a few of th
   ese
>> statements.  Anyone know why?

sure.

>> PROC main ()
>>   DEF table : PTR TO INT, sum = 0
>>
>>   table := [2,4,6,8,10] : INT
>>
>>         CLR.L   D0
>>         MOVE.W  table,D0

Oops! table contains the *address*. better:

           MOVE.L table,A0         /* A0 now points to the list */
           MOVE.W (A0),D0

>> /***  What's wrong with this?  *********************************************
>>
>>         ADD.W   table+2,D0      /* EC says:  ERROR: ',' expected */
>>         /*           ^^  If I remove this it compiles.           */

this operation doesn't make much sence anyway. what you want is:

           ADD.W 2(A0),D0          /* add second element */

>>         ADD.W   table+4,D0
>>         ADD.W   table+6,D0
>>         ADD.W   table+8,D0
>>
>> ***************************************************************************/
>>
>>         MOVE.W  D0,sum
>>         WriteF ('sum=\d\n', sum)

How about:

           MOVE.L table,A0
           MOVEQ  #4,D1         /* 5-1 */
           MOVEQ  #0,D0
loop:      ADD.W  (A0)+,D0
           DBRA   D1,loop


>> /*------------------------------------------------------------------------*/
>> /* Can I get a list of asm opcodes that E understands (Wouter?)  Maybe    */
>> /* some tips and tricks for writing asm code for use in E?  *Any* help    */
>> /* would be greatly appreciated.                                          */
>> /*------------------------------------------------------------------------*/

I understand the manual is no great help here. see my overview below.

>>                            /* What's wrong with this? */
>>         MOVE.L  #table,A0  /* ERROR:  unknown/illegal addressing mode. */

"#" generates an entry in a reloc-entry, and as you might know, the code
generated by the 2.1b compiler doesn't do that: all code is 100% PC-relative.

however, you won't be needing "#" in combination with variables.

If table would've been:

table: INT 2,4,6,8,10

you could've used:

       LEA table(PC),A0

to obtain a pointer.
the equivalent LEA table,A0 is not yet supported, because of reloc-hunks
(and it's way slower than the PC-relative version).

n       = registernum
x       = index
lab     = label, from: "label:" or "PROC label()"
abs     = absolute addressing
s       = size. L, W or B where appropriate.

- addressing modi supported by EC:

  Dn, An, (An), (An)+, -(An), x(An), x(An,Dn.s),
  lab(PC), lab(PC,Dn.s), abs, abs.W

- supported partially:

  #<constexp>

- not supported:

  lab (same as abs), #lab
  use LEA lab(PC),An instead.

- extra modi:

  var.s (transfers contents of var. optionally size is ".W" or ".B",
         default is ".L")

  LibraryFunction(A6)

  example:

  ...
  MOVE.L dosbase,A6
  JSR    Write(A6)


Wouter

   ____  Wouter van Oortmerssen, Wouter@alf.let.uva.nl
  / __/  "Einen Satz verstehen, heisst, wissen was der Fall ist,
 / __/    wenn er wahr ist" - Wittgenstein
/___/  ->subscribe to the E mailing list: amigae-request@bkhouse.cts.com<-


From crash!slc10.INS.CWRU.Edu!ck217 Wed, 16 Jun 93 15:51:13 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 16 Jun 93 15:51:13 PST
Received: from slc10.INS.CWRU.Edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o64lp-0000GFC; Wed, 16 Jun 93 14:11 PDT
Received: by slc10.INS.CWRU.Edu (5.65b+ida+/CWRU-1.5.3-freenet)
	id AA02575; Wed, 16 Jun 93 17:11:44 -0400 (from ck217 for AmigaE@bkhouse.cts.com)
Message-Id: <9306162111.AA02575@slc10.INS.CWRU.Edu>
Date: Wed, 16 Jun 93 17:11:44 -0400
Reply-To: ck217@cleveland.Freenet.Edu (Douglas J. Slotta)
From: ck217@cleveland.Freenet.Edu (Douglas J. Slotta)
To: AmigaE@bkhouse.cts.com
Subject: GadToolsBox .gui to E code



Is there a E source generator for GadToolsBox .gui files yet?
I saw this line at the top of an example file:

	/* E Source generated by SRCGEN v0.1 for GadToolsBox 2.0 */

but have not been able to find SRCGEN anywhere.


Second, if there is one available, would some kind soul find it in 
their heart to mail it to me (uuencoded), I won't have access to FTP
until I return to school next fall.

BTW - Thanks Wouter for a great compiler, a perfect compliment to
      the Amiga platform.

--
Douglas J. Slotta		school=>dslotta@onu.edu
Ohio Northern University	home===>ck217@cleveland.freenet.edu
Mechanical Engineering with a minor in Computer Science

From crash!kirk.safb.af.mil!BWILLS Wed, 16 Jun 93 15:51:25 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 16 Jun 93 15:51:25 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o65bJ-0000OKC; Wed, 16 Jun 93 15:05 PDT
Message-Id: <m0o65bJ-0000OKC@crash.cts.com>
Date: 16 Jun 93 16:57:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  misc.

>...non-standard extension to the language... the fact that EC accepts your
>arrays of length 0 is pure luck...

Wouter, let me make sure we understand each other.  I assume you looked at the
arpbase.i include.  I was under the impression that this LABEL ap_Buf was 
*supposed* to be part of the STRUCTURE AnchorPath!  Are you saying it is not
really part?  If so, why?  According to the Arp manual I'm supposed to be able
to access this by name.  If it's not in the module's OBJECT definition, then it
won't exists (unless the storage is still there due to longword padding.)  Am
I right?  (Eesh!  I hope I am 'cause I thought we had a good solution :)

Later.  -- Barry

From crash!minyos.xx.rmit.OZ.AU!s924723 Wed, 16 Jun 93 17:50:16 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 16 Jun 93 17:50:16 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o67R2-0000dBC; Wed, 16 Jun 93 17:02 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA13616
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Thu, 17 Jun 1993 10:01:19 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306170000.3406@minyos.xx.rmit.oz.au>
Date: Thu, 17 Jun 1993 10:00:43 +1000 (EST)
In-Reply-To: <E141E1B2C0005618@SARA.NL> from "Wouter van Oortmerssen" at Jun 16, 93 03:11:00 pm
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 1919
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Re: misc.

> 
> >> For Wouter.. Pascal supports DEC, INC, Val, Shl and Shr. However it doesn't
> 
> it isn't wirth's pascal (turbo?), but ok.

Oops forgot to mention it's MSDOS Tubro Pascal. It's standard to me. (;

> >> support hexadecimal notation (probably not binary either). One extra thing
> >> I'd like on the informative list comparison you did is Link Lists.
> 
> if you mean [], pascal hasn't got anything that even comes close.
> if you mean OBJECTs with a "next" field in it, what is there to be
> compared?

I always thought Linked Lists were a bit like linked records or linked lists
in C (I not too sure using C). The general gist is that it's an object with an
extra field called next which contains a pointer to the next structure, which
E does automatically. How does E do Link(a,b) when a,b are strings and what
does it mean to have to linked strings.. I don't know.

> >> Son Le
> 
> >> Iconvert now converts LABELs to empty substructures which don't interfere
> >> with the rest of the structure, while permitting you to access LABELs.
> >> So now all you need to do is convert the relevant '.i' file, and henceforth
> >> when you want ap_Buf (in arp or dosasl) you simply type anchor.buf!!
> 
> that's all very nice, but remember you're making a non-standard
> extension to the language... the fact that EC accepts your arrays of
> lenght 0 is pure luck: I don't support this for any future releases.
> (EC accepts it because it assumes the modules to be correct)
> 
> Wouter

I kinda realised it was sorta breaking the structure, but it works! I didn't
think it'd hurt too much as the '.i' files contain pretty much the same thing
, just look at dosasl.i, anyhow if you'renot gonna officially support it how
about putting a LABEL directive in the modules. It's kinda standard to use
anchor.buf for the filename, if you have to use anchor+SIZEOF anchorpath,
it makes E a bit more primitive to use.

Son Le


From crash!minyos.xx.rmit.OZ.AU!s924723 Wed, 16 Jun 93 17:50:19 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 16 Jun 93 17:50:19 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o67Uw-0000i7C; Wed, 16 Jun 93 17:06 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA13648
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Thu, 17 Jun 1993 10:05:34 +1000
Received: by minyos.xx.rmit.oz.au
Date: Thu, 17 Jun 93 10:05:04 EST
Message-Id: <9306170005.3692@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


>>Does anyone know a way/function to print out floats? Is there a procedure
>>in either AmigaE itself, or ks2.04? >

>I had this problem too, in fact I couldn't figure out how to use floats
>AT ALL...

Must have missed Wouter early.. the answer is:

/*
    vary the "[4]" and "10000.0" for different precisions.
*/

PROC writefloat(float)
    WriteF('\d.\z\d[4]\n',SpFix(float),
            SpFix( SpMul( SpSub( SpFlt(SpFix(float)),float ),10000.0 ) ))
ENDPROC

PROC main()
    writefloat(0.0004)
    writefloat(SpDiv(7.0, 22.0))
ENDPROC

Originally, there was an extra SpAbs() around the SpSub(). But I can't
think of a situation when (float - SpFix(float)) [or (float - Int(float)) in
Basic] would be negative(?) so I removed it.

>Also does anybody know a good way to fake 2 dimensional arrays?  Since
>E only uses 1 dimensional?  I fooled around trying to do this but always
>ended up locking up the machine...

Sorry mate, haven't tried 2 dimensional stuff yet.

Bye!
Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Wed, 16 Jun 93 17:50:21 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 16 Jun 93 17:50:21 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o67Uw-0000i8C; Wed, 16 Jun 93 17:06 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA13650
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Thu, 17 Jun 1993 10:05:35 +1000
Received: by minyos.xx.rmit.oz.au
Date: Thu, 17 Jun 93 10:05:10 EST
Message-Id: <9306170005.3700@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


What a surprise, Barry.. I was just asking you about list and strings in E,
now I have to explain the same things back to you in assembly. (;

>  table := [2,4,6,8,10] : INT

In asm, table contains an address pointing to 2L,4L,6L,8L,10L (it's a
pointer to this).

  eg. [table] -> [2,4,6,8,10]
     location    address with contents
         with
      address

To access the contents of table you must move the address into an address
register and do indirect calls.

  eg. MOVE.L  table,A0
      MOVE.W  (A0),D0

D0 now contains 2. To get the next content, you must increase address by
2 to get a pointer to the next content.

  eg. ADD.L   #2,A0        Which is the same as  MOVE.W  2(A0),D0
      MOVE.W  (A0),D0                            address with 2 offset.

>                           /* What's wrong with this? */
>        MOVEA.L #table,A0  /* ERROR:  unknown/illegal addressing mode. */

Firstly this won't work as table contains a pointer so if it did work you'd
need to do an extra MOVE.L (A0),A1 to get the content's address. Secondly,
EC complains because in E table is already an address offset (ie. 2(Ax), I
think!) so the command MOVE.L #2(Ax),A0 is illegal (not #immediate!).
This is the same reason why #table+2 won' work.

>        MOVEA.L table,A0  /* WORKS.      */
>     /* MOVE.L  table,A0  works as well. */
>     /* LEA     table,A0  does not work. */

MOVE.L is a shorthand for MOVE.L and MOVEA.L (for people like us who can't
remember to do MOVEA.L when we mean MOVE.L :) difference being if the dest.
is an address register, the proper form is MOVEA.L, but most assemblers
do it automatically for you.

The LEA command is.. correct, I think. Don't know why it doesn't work. (;
(That is, it's looks okay to me, but I don't know enough asm to say :)

Bye!
Son Le

PS. I'm no assembly coder, so I can't guarantee whay I've said is 100%
correct, but it should give you a better understanding of assembly E.

From crash!minyos.xx.rmit.OZ.AU!s924723 Wed, 16 Jun 93 17:50:24 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 16 Jun 93 17:50:24 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o67V7-0000iGC; Wed, 16 Jun 93 17:06 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA13652
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Thu, 17 Jun 1993 10:05:43 +1000
Received: by minyos.xx.rmit.oz.au
Date: Thu, 17 Jun 93 10:05:20 EST
Message-Id: <9306170005.3716@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


Re: sscanf()

>> Ah, the unfathomability of syncronicity.  You're somewhat in luck, Son Le,
>> because Wouter has very recently revealed to me the existence of an
>> undocumented E function:  StringF().

> Synopsis:
>   StringF (stringVar, formatString, arglist...)
> Description:
>   Converts the arguments in arglist into string values according to
>   the format string.
> Arguments:
>   stringVar    = receiving string.
>   formatString = string of format symbols; refer to WriteF() for these.
>   arglist      = variable number of arguments to be converted, according to
>                  the format string.
>
> Hope this is what you're looking for.  Later.  -- Barry

Thanks, Barry.. but isn't this going the wrong way? I want to get info from
a string, not info to string.

Re: about arp structures.. as before, you can use them and they should work
okay, but if it crashs don't be surprised. Try them out and see what works
and what doesn't.. They look fine, but I wouldn't bet any money on them. (;

Son Le

From crash!kirk.safb.af.mil!BWILLS Thu, 17 Jun 93 13:49:08 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 17 Jun 93 13:49:08 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6PN5-0000PdC; Thu, 17 Jun 93 12:11 PDT
Message-Id: <m0o6PN5-0000PdC@crash.cts.com>
Date: 17 Jun 93 14:08:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: sscanf.e

To Son Le:

Here is a shell for the sscanf() function you were asking about.  Didn't have
time to work out the string parsing.  Don't know if/when I'll work on it.  But
this is a [good?] example of how to put things into a list variable and get them
out again.  This example goes one further and shows how you can simulate passing
a variable number of args into a proc by sending them as a list.  Let me know
what you think (that's meant for everybody, especially Wouter!)

-- Barry

----------  CUT HERE  ---------------------------------------------------------
DEF ssf_x,
    ssf_var : PTR TO LONG,
    ssf_forCount


PROC assign ()
  ssf_var [ssf_forCount] := ssf_x
  INC ssf_forCount
ENDPROC


PROC sscanf (str, fmt, varList)
  DEF numRead = 0, i, listLen

  /* Get/set length of list. */
  listLen := ListLen (varList)
  SetList (varList, listLen)

  /* Extract vars from list. */
  ssf_var := New (listLen * 4)  /* 4=SIZEOF LONG. */
  ssf_forCount := 0
  ForAll ({ssf_x}, varList, `assign ())

/*------------------------------------------------------------------------*/
/* Just some displays to see what we got as params.                       */
/* This is where your code goes to parse the string.                      */

  WriteF ('ListLen(varList)=\d\n', listLen)
  WriteF ('\s\n' +
          '\s\n', str, fmt)
  FOR i := 0 TO (listLen - 1)
    WriteF ('ssf_var[\d]=\d\n', i, ssf_var [i])
  ENDFOR
  WriteF ('\n')

/* End of displays.                                                       */
/*------------------------------------------------------------------------*/

  Dispose (ssf_var)
ENDPROC  numRead



PROC main ()
  DEF string [20] : STRING,
      format [20] : STRING,
      a=90, b=91, c=92, d=93

  StrCopy (string, '100 101 102 103', ALL)
  StrCopy (format, '\d \d \d \d', ALL)
  /* ---> OR...
    StrCopy (format, '%d %d %d %d', ALL)
  */

  sscanf (string, format, [a,b,c,d])
ENDPROC

From crash!kirk.safb.af.mil!BWILLS Thu, 17 Jun 93 13:49:16 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 17 Jun 93 13:49:16 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6Pmt-0000YAC; Thu, 17 Jun 93 12:38 PDT
Message-Id: <m0o6Pmt-0000YAC@crash.cts.com>
Date: 17 Jun 93 14:34:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: sscanf.e correction

sscanf.e doesn't really do as a proc shell what I wanted it to.  It was a rush
job, and I forgot something, so I'm going to try to patch it with this posting
instead of fixing and redistributing.  I wanted to test the proc to make sure I
was getting the list vars into sscanf() properly, but what you really want is
the addresses of the vars.  So when you call sscanf() it should be like this:

    numRead := sscanf(string, format, [{a},{b},{c},{d}])

Then in sscanf() you need to get at the vars by using:

    DEF v
    ...
    v := var[0]  /* or var[i] or similar means */
    ...
    ^v := someValue /* v is a pointer */
      /* ^v will be assigned a numeric val, or the address of a */
      /* string, or whatever your format string says it should  */
      /* hold.                                                  */


Sorry for the oversight!  If these instructions are too vague then let me know
and I'll fix the proc shell and repost it.

-- Barry

P.S. - Where is everybody?  The list has been so quiet lately!

From crash!kirk.safb.af.mil!BWILLS Thu, 17 Jun 93 18:06:44 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 17 Jun 93 18:06:44 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6Sfg-0000p7C; Thu, 17 Jun 93 15:43 PDT
Message-Id: <m0o6Sfg-0000p7C@crash.cts.com>
Date: 17 Jun 93 17:38:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: sscanf.e (fixed)

Okay, Son Le.  Here it is.  sscanf() now does exactly what I want it to do.  All
you have to do is write the code to scan the string and place numeric values in
the variables at addresses in the array ssf_var, and put the addresses of
strings there in the same way.  I think the shell should be pretty easy to
work with.  The only thing up in the air is how to implement floats :-)  Oh,
don't forget characters.  I don't know if you want to do octal and hex.  Anyway,
if you don't want to work on the scanning algorithm myself, let me know so I can
stick it on the back burner.  That way it won't get forgotten.  (Oops, back two
sentences should read "yourself" .vs. "myself".  I don't know how to get back to
pervious lines in this mail editor.  It's a massive pain in the BUTT! :(

As usual, let me know what you think.

-- Barry
DEF ssf_x,
    ssf_var : PTR TO LONG,
    ssf_forCount


PROC assign ()
  ssf_var [ssf_forCount] := ssf_x
  INC ssf_forCount
ENDPROC


PROC sscanf (str, fmt, varList)
  DEF numRead = 0, i, listLen, var = NIL

  /* Get/set length of list. */
  listLen := ListLen (varList)
  SetList (varList, listLen)

  /* Extract addresses from list. */
  ssf_var := New (listLen * 4)  /* 4=SIZEOF LONG. */
  ssf_forCount := 0
  ForAll ({ssf_x}, varList, `assign ())

/*------------------------------------------------------------------------*/
/* Just some displays to see what we got as params.                       */
/* This is where your code goes to parse the string.                      */

  WriteF ('Values passed to sscanf():\n')
  WriteF ('  ListLen(varList)=\d\n', listLen)
  WriteF ('  string=\s\n' +
          '  format=\s\n', str, fmt)

  FOR i := 0 TO (listLen - 1)
    var := ssf_var [i]  /* get the address from the array. */
    WriteF ('  ssf_var[\d]=\d\n', i, ^var)
    ^var := ^var + 20  /* change the values just to see the results. */
  ENDFOR

  ^var := 'Pretend this is an extracted string.'
    /* simulate extracting a string.  look at end of main to see result. */

/* End of displays.                                                       */
/*------------------------------------------------------------------------*/

  Dispose (ssf_var)
ENDPROC  numRead



PROC main ()
  DEF string [20] : STRING,
      format [20] : STRING,
      a=90, b=91, c=92, d=93,
      numRead

  StrCopy (string, '100 101 102 103', ALL)
  StrCopy (format, '\d \d \d \d', ALL)
  /* ---> OR...
    StrCopy (format, '%d %d %d %d', ALL)
  */

  numRead := sscanf (string, format, [{a},{b},{c},{d}])

  WriteF ('The modified values:\n' +
          '  a=\d\n' +
          '  b=\d\n' +
          '  c=\d\n' +
          '  d=\d (address of a string)\n', a, b, c, d)
  WriteF ('  string at d=\s\n', d)
ENDPROC

From crash!cs.unm.edu!bbx!kazoo.basis.com!anewton Thu, 17 Jun 93 18:07:04 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 17 Jun 93 18:07:04 PST
Received: from mimbres.cs.unm.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6UE7-0000xAC; Thu, 17 Jun 93 17:22 PDT
Received: from bbx.UUCP by mimbres.cs.unm.edu (5.65/033093) with UUCP
	id <AA23614@mimbres.cs.unm.edu>; Thu, 17 Jun 93 18:13:29 -0600
Received: from kazoo.basis.com by bbx.basis.com (4.1/SMI-4.1)
	id AA04788; Thu, 17 Jun 93 17:50:44 MDT
Date: Thu, 17 Jun 93 17:50:02 MDT
X-Mailer: ELM [version 2.3 PL0]
Message-Id:  <9306171750.aa03211@kazoo.basis.com>
From: "Allen J. Newton" <anewton@kazoo.basis.com>
To: AmigaE Mailing List <amigae@bkhouse.cts.com>
Subject: Request

Hello, Amiga E users!

    I was wondering if one of you might be so kind as to send me some
    information on E.  What I am looking for is a list of features, who
    created it, why, how does E differ from other languages, what features
    make it unique.  Things of that nature, as well as a description of the
    language itself.  Perhaps a synopsis of the language keywords would be
    helpful, as well as where I could acquire it.  I don't have ftp access
    anywhere, and cannot acquire it that way.  I DO have uucp access if
    there is a UNIX facility which stores files.

    Thanks in advance!

-- 
--------------------------------------------------------------------------------
Allen J. Newton     BASIS International Ltd,  (505)-345-5232
5901 Jefferson NE,  Albuquerque, New Mexico   87109
anewton@basis.com

From crash!mars.let.uva.nl!wouter Thu, 17 Jun 93 19:52:12 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 17 Jun 93 19:52:12 PST
Received: from mars.let.uva.nl by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6WFq-00011UC; Thu, 17 Jun 93 19:32 PDT
Received: by mars.let.uva.nl id AA03653
  (5.65c/IDA-1.4.4 for amigae@bkhouse.cts.com); Fri, 18 Jun 1993 04:35:44 +0200
Return-Path: <wouter@mars.let.uva.nl>
Date: Fri, 18 Jun 1993 04:35:44 +0200
Message-Id: <199306180235.AA03653@mars.let.uva.nl>
X-Organisation: Department of Computational Linguistics,
                University of Amsterdam
                Spuistraat 134, 1012 VB Amsterdam, The Netherlands
From: Wouter van Oortmerssen <wouter@mars.let.uva.nl>
To: amigae@bkhouse.cts.com
Subject: linked lists and labels

>> I always thought Linked Lists were a bit like linked records or linked lists
>> in C (I not too sure using C). The general gist is that it's an object with a
 
>> extra field called next which contains a pointer to the next structure, which
>> E does automatically. How does E do Link(a,b) when a,b are strings and what
>> does it mean to have to linked strings.. I don't know.
 
A [] structure is not linked: it's a linear structure like arrays etc.
The next field in a STRING is something specific to this datatype,
if you want the general form of a linked list, you'll need to make an
object:
 
E:			C:			Pascal:
 
OBJECT bla		struct bla {		TYPE bla=RECORD
  next, otherdata	  int next, otherdata;	  next, otherdata:INTEGER
ENDOBJECT		};			END;
 
otherdata should be the data you would actually like to store in the
list. for linking you cannot use Link(), as this is for STRINGs only.
 
however you can make your own:
 
PROC linkbla(current:PTR TO bla,next)
  current.next:=next
ENDPROC
 
PROC nextbla(current:PTR TO bla) RETURN IF current THEN current.next ELSE NIL
 
etc.
better use x.next:=y etc. directly, ofcourse.
 
>> > that's all very nice, but remember you're making a non-standard
>> > extension to the language... the fact that EC accepts your arrays of
>> > lenght 0 is pure luck: I don't support this for any future releases.
>> > (EC accepts it because it assumes the modules to be correct)
>> > 
>> > Wouter
>> 
>> I kinda realised it was sorta breaking the structure, but it works! I didn't
 
"it works!" is about the worst attitude towards programming I know. :-)
 
>> think it'd hurt too much as the '.i' files contain pretty much the same thing
>> , just look at dosasl.i, anyhow if you'renot gonna officially support it how
>> about putting a LABEL directive in the modules. It's kinda standard to use
>> anchor.buf for the filename, if you have to use anchor+SIZEOF anchorpath,
>> it makes E a bit more primitive to use.
 
E, is a higher programming language, and it simply doesn't allow
for these labels like assembly. if you really want, then just change
 
LABEL ap_buf
 
in the .i file to 
 
STRUCT ap_buf,1
 
and convert with the original version of Iconvert. You'll get exactly
the same thing as in C (see: dosasl.h), and it will let you address
with "anchor.buf"
but: don't go about changing thing which might affect compiler
behaviour like you did before. my warning should be enough.
 
>> Son Le
 
>> >...non-standard extension to the language... the fact that EC accepts your
>> >arrays of length 0 is pure luck...
>> 
>> Wouter, let me make sure we understand each other.  I assume you looked at th
 
>> arpbase.i include.  I was under the impression that this LABEL ap_Buf was 
>> *supposed* to be part of the STRUCTURE AnchorPath!  Are you saying it is not
 
just look at the C version... the assembly one is just a hack.
 
>> really part?  If so, why?  According to the Arp manual I'm supposed to be abl
 
>> to access this by name.  If it's not in the module's OBJECT definition, then 
t
>> won't exists (unless the storage is still there due to longword padding.)  Am
>> I right?  (Eesh!  I hope I am 'cause I thought we had a good solution :)
 
If _that_ is you idea of a good solution...
anyway, check with what I propose in the answer to Son Le above:
and all that without dangerous manipulations!
 
>> Later.  -- Barry
 
Wouter
 
   ____  Wouter van Oortmerssen, Wouter@alf.let.uva.nl
  / __/  "Einen Satz verstehen, heisst, wissen was der Fall ist,
 / __/    wenn er wahr ist" - Wittgenstein
/___/  ->subscribe to the E mailing list: amigae-request@bkhouse.cts.com<-

From crash!kirk.safb.af.mil!BWILLS Thu, 17 Jun 93 21:44:43 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 17 Jun 93 21:44:43 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6X94-0000tEC; Thu, 17 Jun 93 20:29 PDT
Message-Id: <m0o6X94-0000tEC@crash.cts.com>
Date: 17 Jun 93 22:27:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: 2Darray.e (solution)

I forget who originally asked this question.  Must have accidently deleted the
message (sorry!)  But here it is:  2D arrays in E!  With a little more work this
could be expanded into a MULTI-dimensional module (see my sscanf.e module for a
hint :)  Later.  -- Barry

---  CUT HERE  -------------------------------------------------------------

/*========================================================================*/
/*                                                                        */
/* 2D array in E.  It's as easy as this.                                  */
/*                                                                        */
/* User components are:                                                   */
/*   dd_arrayType and the components therein                              */
/*   dd_dim (), create the 2d array                                       */
/*   dd_set (), put a value into an element of the 2d array               */
/*   dd_get (), get a value from an element of the 2d array               */
/*                                                                        */
/* The other components of this module should not be useful.              */
/*                                                                        */
/*========================================================================*/


RAISE 0 IF CtrlC () = TRUE
/* You should define an error trap for New()=NIL. */


OBJECT dd_arrayType
  iUBound, jUBound, elSize, elements
ENDOBJECT


/* These are global to speed up array access. */
DEF dd_ar : PTR TO dd_arrayType,
    dd_charPtr : PTR TO CHAR,
    dd_intPtr : PTR TO INT,
    dd_longPtr : PTR TO LONG,
    dd_elSize


PROC dd_dim (i, j, elSize)
  IF (elSize <> 1) AND
     (elSize <> 2) AND
     (elSize <> 4) THEN Raise ('Invalid element size.')
  dd_ar := New (SIZEOF dd_arrayType)
  dd_ar.elements := New (i*j*elSize)
  dd_ar.iUBound := i - 1
  dd_ar.jUBound := j - 1
  dd_ar.elSize := elSize
ENDPROC  dd_ar


PROC checkBounds (i, j)
  /* dd_ar already points to array when this is called. */
  IF (i < 0) OR (i > dd_ar.iUBound) THEN Raise ('"i" subscript out of bounds.')
  IF (j < 0) OR (j > dd_ar.jUBound) THEN Raise ('"j" subscript out of bounds.')
ENDPROC  TRUE


PROC dd_offset (i, j) RETURN ((i * (dd_ar.jUBound + 1) + j) * dd_elSize)


PROC dd_set (array, i, j, value)
  dd_ar := array
  checkBounds (i, j)
  dd_elSize := dd_ar.elSize
  SELECT dd_elSize
    CASE 1
      dd_charPtr := dd_ar.elements
      dd_charPtr [dd_offset (i, j)] := value
    CASE 2
      dd_intPtr := dd_ar.elements
      dd_intPtr [dd_offset (i, j)] := value
    CASE 4
      dd_longPtr := dd_ar.elements
      dd_longPtr [dd_offset (i, j)] := value
  ENDSELECT
ENDPROC


PROC dd_get (array, i, j)
  DEF value
  dd_ar := array
  checkBounds (i, j)
  dd_elSize := dd_ar.elSize
  SELECT dd_elSize
    CASE 1
      dd_charPtr := dd_ar.elements
      value := dd_charPtr [dd_offset (i, j)]
    CASE 2
      dd_intPtr := dd_ar.elements
      value := dd_intPtr [dd_offset (i, j)]
    CASE 3
      dd_longPtr := dd_ar.elements
      value := dd_longPtr [dd_offset (i, j)]
  ENDSELECT
ENDPROC  value


PROC dd_dispose (array)
  dd_ar := array
  Dispose (dd_ar.elements)
  Dispose (dd_ar)
ENDPROC


PROC main () HANDLE
  DEF myArray : PTR TO dd_arrayType,  /* Only needs to PTR TO if you want */
                                      /* access to the OBJECT fields.     */
      xDim = 4, yDim = 4,             /* x and y dimensions.              */
      sizeofChar = 1,                 /* Just for readability.            */
      i, j, val = 0                   /* Loop counters.                   */

  /* Create the array. */
  myArray := dd_dim (xDim, yDim, sizeofChar)

  /* Put stuff in each element. */
  FOR i := 0 TO myArray.iUBound
    FOR j := 0 TO myArray.jUBound
      CtrlC()
      dd_set (myArray, i, j, val++)
    ENDFOR
  ENDFOR

  /* Get it back out. */
  FOR i := 0 TO myArray.iUBound
    FOR j := 0 TO myArray.jUBound
      WriteF ('myArray [\d,\d]=\d\n', i, j, dd_get (myArray, i, j))
    ENDFOR
  ENDFOR

  /* Cleanup. */
  dd_dispose (myArray)

EXCEPT
  IF exception THEN WriteF ('\s\n', exception)
  CleanUp (exception)
ENDPROC

From crash!lise.unit.no!eyvind Fri, 18 Jun 93 05:46:50 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 18 Jun 93 05:46:50 PST
Received: from lise1.lise.unit.no by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6er9-0000ILC; Fri, 18 Jun 93 04:43 PDT
Received: from lise3.lise.unit.no by lise1.lise.unit.no with SMTP 
	id <AA09586>; Fri, 18 Jun 1993 13:43:37 +0200
Received: by lise3.lise.unit.no ; Fri, 18 Jun 1993 13:43:35 +0200
Message-Id: <199306181143.AA07722@lise3.lise.unit.no>
Date: Fri, 18 Jun 1993 13:43:35 +0200 (MET DST)
X-Mailer: ELM [version 2.4 PL21]
Content-Type: text
Content-Length: 387
X-Charset: ASCII
X-Char-Esc: 29
From: Eyvind Bernhardsen <eyvind@lise.unit.no>
To: amigae@bkhouse.cts.com
Subject: Unsubscribe

I'm off for the summer, and the sysadmins have vats of acid ready for those
who forget the basic rules (UNSUBSCRIBE before you leave for the summer).  So
I'd appreciate unsubscription muchly.  Thanks :)
-- 
     // Eyvind Bernhardsen | eyvind@lise.unit.no
    //                     |
\\ //   Finger me for my   | Insane and *proud* of it!
 \X/    public PGP key :)  | Save the whalers!

From crash!rcbins.mu.wvnet.edu!AMONROE Fri, 18 Jun 93 07:47:10 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 18 Jun 93 07:47:10 PST
Received: from byrd.mu.wvnet.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6gWP-000030C; Fri, 18 Jun 93 06:30 PDT
Received: by byrd.mu.wvnet.edu (5.57/Ultrix3.0-C)
	id AA02265; Fri, 18 Jun 93 09:29:19 -0400
Received: From RCBINS/WORKQUEUE by bins00.mu.wvnet.edu
          via Charon-4.0A-VROOM with IPX id 100.930618092943.896;
          18 Jun 93 09:32:10 +0500
Message-Id: <MAILQUEUE-101.930618092934.352@rcbins.mu.wvnet.edu>
Date:         18 Jun 93 09:29:34 EST
Priority: normal
X-Mailer:     Pegasus Mail v2.3 (R5).
From: "R. Alan Monroe"  <AMONROE@rcbins.mu.wvnet.edu>
To: amigae@bkhouse.cts.com
Subject: E apps


Has anyone written an actual, big, useful, intuitionized app of some
sort that they would like to show off?  So we can be inspired to
reach some new heights in our E programming... :^)
Has anyone written any "demo"-type code or just some snazzy gfx in E?

Have fun
Alan

From crash!kirk.safb.af.mil!BWILLS Mon, 21 Jun 93 10:26:32 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:26:32 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6l4A-0000XDC; Fri, 18 Jun 93 11:21 PDT
Message-Id: <m0o6l4A-0000XDC@crash.cts.com>
Date: 18 Jun 93 13:19:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: re:  E apps

On 18 June Alan wrote:

>Has anyone written an actual, big, useful, intuitionized app of some
>sort that they would like to show off?  So we can be inspired to
>reach some new heights in our E programming... :^)
>Has anyone written any "demo"-type code or just some snazzy gfx in E?

Nope.  so far I've only written useful stuff, none of it involving intuition
(except for my rewrite of MemBar which uses a widow, a close gadget, and IDCMP
mouse messages.)  

I'm not really interested in writing demo stuff.  I'm really impressed by demos
whenever I see one, but right now I want to stick to application stuff, and my
applications/utils so far could not be called 'big'.

The biggest, snazziest app I've heard of is what Norm has done for the mailing
list.  If I get any ideas rest assured you'll hear about them :)  But for now,
I'm still learning about E and about the Amiga, and that's taking alot of my
time and energy.  Don't really know what I want to write next, though.  Any
ideas, Alan?  Anybody?

Later.

-- Barry


From crash!kirk.safb.af.mil!BWILLS Mon, 21 Jun 93 10:27:10 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:27:10 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6nUW-0000IDC; Fri, 18 Jun 93 13:56 PDT
Message-Id: <m0o6nUW-0000IDC@crash.cts.com>
Date: 18 Jun 93 15:54:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: arpbase.m and asl.m

To Son Le and Wouter.

It has been said:

> >> think it'd hurt too much as the '.i' files contain pretty much the same th
> >> , just look at dosasl.i, anyhow if you'renot gonna officially support it h
> >> about putting a LABEL directive in the modules. It's kinda standard to use
> >> anchor.buf for the filename, if you have to use anchor+SIZEOF anchorpath,
> >> it makes E a bit more primitive to use.
>  
> E, is a higher programming language, and it simply doesn't allow
> for these labels like assembly. if you really want, then just change
> 
> LABEL ap_buf
>  
> in the .i file to 
>  
> STRUCT ap_buf,1
>  
> and convert with the original version of Iconvert. You'll get exactly
> the same thing as in C (see: dosasl.h), and it will let you address
> with "anchor.buf"
> but: don't go about changing thing which might affect compiler
> behaviour like you did before. my warning should be enough.
>
> >> >...non-standard extension to the language... the fact that EC accepts your
> >> >arrays of length 0 is pure luck...
> >> 
> >> Wouter, let me make sure we understand each other.  I assume you looked at
>  
> >> arpbase.i include.  I was under the impression that this LABEL ap_Buf was 
> >> *supposed* to be part of the STRUCTURE AnchorPath!  Are you saying it is not
>  
> just look at the C version... the assembly one is just a hack.

I tried to keep this pertinent, and retain some continuity.  I think I'm
keeping up, so correct me if I'm wrong.

1.  To use ap_Buf in assembly, I must allocate a variable of type AnchorPath to
be (SIZEOF AnchorPath + SIZEOF buffer_i_wanna_use).

2.  To use ap_Buf in C, I must allocate the same way. The confusing thing is 
that C requires the struct to reserve a UBYTE variable of size 1 in order to 
keep the label ap_Buf, whereas assembly only requires the definition of a label.

3.  In E I must allocate the same way.  But if I use the libraries/asl.m module
I won't be able to access the buffer by saying myAnchorPath.ap_buf.  To access
this I need to say my_ap_buf := myAnchorPath + SIZEOF_anchorPath (or something
like that.)

Any comments?

-- Barry


From crash!kirk.safb.af.mil!BWILLS Mon, 21 Jun 93 10:28:51 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:28:51 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6rZT-0000p1C; Fri, 18 Jun 93 18:18 PDT
Message-Id: <m0o6rZT-0000p1C@crash.cts.com>
Date: 18 Jun 93 20:15:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: CreateTask()

A short while ago someone asked about the existence/location of the CreateTask()
function.  Well, I have found some C code which has two functions:  CreateTask()
and DeleteTask().  The code looks fairly simple (it's only about 1500 bytes),
and it looks like it could be ported to E without much work.  Interested?  Drop
me a line.  I won't post it unless someone requests it.  Also, if you're not all
that familiar with C, say so and I'll try to port it (but I've never tried to
program tasks, so you'd be taking a risk! :)  Later.  -- Barry

From crash!kirk.safb.af.mil!BWILLS Mon, 21 Jun 93 10:29:24 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:29:24 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6tPL-00001hC; Fri, 18 Jun 93 20:15 PDT
Message-Id: <m0o6tPL-00001hC@crash.cts.com>
Date: 18 Jun 93 22:12:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: askreq.e

/* Here's something I found in C and I couldn't resist translating it.  It was
   something I was interested in a long time ago, but the one I saw said, "KS2.0
   only!"  (But I think that one did a little more than yes/no.
*/

/******************************************************
* REQSTD  - A simple boolean requester command for use
*           within EXECUTE command files.
*******************************************************
* THIS VERSION OBSERVES "STANDARD" C PRGMG CONVENTIONS
*******************************************************
* BVO Computing Services, January 1987, Bob Riemersma
*******************************************************
* Format:   REQSTD <string>
* Template: REQSTD " "
* Purpose:  To ask the user a yes/no question from
*           within an EXECUTE command file.
* Specification:
*   REQSTD invokes a system requester displaying the
*   text argument given, and accepts either a "Yes" or
*   a"No" response via the requester's boolean gadgets.
*   This response is communicated to the command stream
*   via REQSTD's return result: 0 = No, 5 = Yes.
* Example:
*           REQSTD "Are you older than 35?"
*           IF WARN  ;WARN = Yes
*              ECHO "Hmmm, so you are."
*           ELSE
*              ECHO "Just a young whippersnapper!"
*           ENDIF
*******************************************************
* Note to rodent-haters:
*   Beginning with KS/WB 1.2 you may respond using
*   "Left Amiga-V" for "Yes", "Left Amiga-B" for "No".
*******************************************************
* Original C code ported to E by Barry Wills, 18 Jun 93.
* Sizes of executables:
*   StdC:     14,388 bytes
*   SkinnyC:   2,540 bytes
*   E:           856 bytes
* Note:  no explanation was provided about "StdC" and
*        "SkinnyC".
*******************************************************
;I decided to call my executable "AskReq", so I tested
;it with this script:
AskReq "Will you help me?"
If WARN
  Echo "Oh, thank you, thank you!"
Else
  Echo "Okay, be that way!"
EndIf
******************************************************/

MODULE 'dos/dosextens',
       'intuition/intuition',
       'graphics/rastport'

DEF myself : PTR TO process


PROC main ()
  DEF reqWidth,
      questionLength

  IF arg [] = 0 THEN RETURN 120
  questionLength := StrLen (arg)
  /* get rid of quotes efficiently */
  arg [0] := " "
  arg [questionLength - 1] := " "

  myself := FindTask (0)

  IF (reqWidth := 8 * questionLength + 40) < 200 THEN reqWidth := 200

  RETURN IF AutoRequest (myself.windowptr,
                         [2, 1, RP_JAM1, 8, 6, NIL, arg,   NIL] : intuitext,
                         [2, 1, RP_JAM1, 6, 4, NIL, 'Yes', NIL] : intuitext,
                         [2, 1, RP_JAM1, 6, 4, NIL, 'No',  NIL] : intuitext,
                          NIL, NIL,
                          reqWidth, 50) THEN 5 ELSE 0
ENDPROC

From crash!slc4.INS.CWRU.Edu!ck217 Mon, 21 Jun 93 10:29:27 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:29:27 PST
Received: from slc4.INS.CWRU.Edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6tuW-0000EhC; Fri, 18 Jun 93 20:48 PDT
Received: by slc4.INS.CWRU.Edu (5.65b+ida+/CWRU-1.5.4-ins)
	id AA23446; Fri, 18 Jun 93 23:48:02 -0400 (from ck217 for amigae@bkhouse.cts.com)
Message-Id: <9306190348.AA23446@slc4.INS.CWRU.Edu>
Date: Fri, 18 Jun 93 23:48:02 -0400
Reply-To: ck217@cleveland.Freenet.Edu (Douglas J. Slotta)
From: ck217@cleveland.Freenet.Edu (Douglas J. Slotta)
To: amigae@bkhouse.cts.com
Subject: Gadtoolsbox redux



I have had several personal inquries for me to pass on the conversion tool
(.gui -> E code), if I have received it.  Since I have not, I can not.
Is there no one out there with any info on this?

--
Douglas Slotta			school->dslotta@onu.edu
Ohio Northern University	home--->ck217@cleveland.freenet.edu
M.E. w/Comp Sci minor

From crash!minyos.xx.rmit.OZ.AU!s924723 Mon, 21 Jun 93 10:29:34 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:29:34 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6wk2-0000RQC; Fri, 18 Jun 93 23:49 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA05361
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sat, 19 Jun 1993 16:49:25 +1000
Received: by minyos.xx.rmit.oz.au
Date: Sat, 19 Jun 93 16:49:31 EST
Message-Id: <9306190649.21401@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Reply to Wouter


If only you had told us about struct ap_Buf,1 now of this would have happened!
I really thought it didn't really matter about a zero size array (I mean, what
could possibly go wrong with an empty array?) - oh well, I guess I was
wrong.

If this is the case with the '.i' files, why not use the '.h' headers?
Lazyness, perhaps? :)

One more question, how about the #define ap_First ap_Base? How would I get
E to accept it as a legit reference call? (eg. ap.first?)

Sorry for any troubles cause.
Son Le
k
PS. the "now" in the first line of this messages should read "earlier" :)

From crash!minyos.xx.rmit.OZ.AU!s924723 Mon, 21 Jun 93 10:29:36 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:29:36 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o6wpb-0000yFC; Fri, 18 Jun 93 23:55 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA05383
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sat, 19 Jun 1993 16:55:12 +1000
Received: by minyos.xx.rmit.oz.au
Date: Sat, 19 Jun 93 16:55:18 EST
Message-Id: <9306190655.21448@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: SetVBuf?


Oops forgot to ask earlier, but concerning the dos2.0 library call, SetVBuf.
In the includes and manual, it says SetVBuf accepts 4 parameters,
SetVBuf(fh, buff, type, size).. E accepts 3!?!

Question is why and what are the 3 params?

Son Le

From crash!cbmehq.uucp.commodore.com!cbmnor!cnaas!naasc Mon, 21 Jun 93 10:29:47 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:29:47 PST
Received: from cbmmail.commodore.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o71yw-0000HQC; Sat, 19 Jun 93 05:25 PDT
Received: from cbmvax.cbm.commodore.com by cbmmail.commodore.com (4.1/SMI-4.1)
	id AA24105; Sat, 19 Jun 93 08:25:16 EDT
Received: by cbmvax.cbm.commodore.com
	(5.57/UUCP-Project/Commodore - Server Version 01/25/93)
	id AA03519; Sat, 19 Jun 93 08:25:28 EDT
Received: by cbmehq.esco.so.commodore.com; Sat, 19 Jun 1993 13:54 MET
Received: by cbmnor.no.so.commodore.com; Sat, 19 Jun 1993 12:25 MET
Received: by cnaas.adsp.sub.org (V1.16/Amiga)
	id AA0039o; Fri, 18 Jun 93 00:42:15 GMT
Date: Fri, 18 Jun 93 00:42:15 GMT
Message-Id: <9306180042.AA0039n@cnaas.adsp.sub.org>
X-Mailer: //\\miga Electronic Mail (AmiElm 1.11)
Organization: SSD
Reply-To: cbmehq!cbmnor!cnaas!naasc@cbmvax.cbm.commodore.com
X-Charset: iso-8859-1
Content-Type: text
Content-Length: 227
From: naasc@cnaas.adsp.sub.org (Christopher Naas) (Christopher Naas)
To: amigae@bkhouse.cts.com
Subject: Take me off.

I repeat, PLEASE remove me from the Amiga E mailing list.
The amount of mail is too great.


   __ __
  /_ /_ /\  Christopher Naas            My opinions only,  not
 __/__//_/ naasc@cnaas.adsp.sub.org    those of my co workers

From crash!golum.riv.csu.edu.au!geoff Mon, 21 Jun 93 10:30:22 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:30:22 PST
Received: from golum.riv.csu.edu.au by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o7AQm-00002HC; Sat, 19 Jun 93 14:26 PDT
Received: by golum.riv.csu.edu.au (5.65/DEC-Ultrix/4.3)
	id AA20134; Sun, 20 Jun 1993 07:28:50 +1000
Message-Id: <9306192128.AA20134@golum.riv.csu.edu.au>
Reply-To: gfellows@csu.edu.au
Organisation: Charles Sturt University-Riverina, Australia
Date: Sun, 20 Jun 93 07:28:50 -0800
X-Mts: smtp
From: Geoff Fellows (CSU-R InfoStud) <geoff@golum.riv.csu.edu.au>
To: amigae@bkhouse.cts.com
Subject: Toy program

Here's a toy program that someone might find useful:

/* Draw a tree using recursion on the command */
MODULE	'dos/dostags', 'utility/tagitem', 'intuition/intuition'
CONST IFLAGS=IDCMP_CLOSEWINDOW, X0=160, Y0=256, MINLEN=16, SQR3E6=1732

PROC main()
	DEF myargs:PTR TO LONG,rdargs

	myargs:=[0,0,0,0,0]
	rdargs:=ReadArgs('RAST/A/N,X/A/N,Y/A/N,GRAD/A/N,LEN/A/N', myargs, NIL)
	IF rdargs
		branch(myargs)
		FreeArgs(rdargs)
	ELSE
		root()
	ENDIF
ENDPROC
PROC root()
	DEF sptr, wptr
	sptr:=OpenS(320,256,4,0,'Root Screen')
	wptr:=OpenW(0,0,320,256,IFLAGS,15,'Tree',sptr,15,NIL)
	newbranch(0, 0, 90, 128)
	WaitIMessage(wptr)
	CloseW(wptr)
	CloseS(sptr)
ENDPROC
PROC branch(myargs: PTR TO LONG)
	DEF x, y, x1, y1, dxdy: PTR TO LONG, gradient, length

	SetStdRast(Long(myargs[0]))
	x := Long(myargs[1])
	y := Long(myargs[2])
	gradient := Long(myargs[3])
	length := Long(myargs[4])
	IF length >= MINLEN
		dxdy := dxy(gradient, length)
		x1 := x + dxdy[0]; y1 := y + dxdy[1]
		Line(X0+x,Y0-y,X0+x1,Y0-y1,1)
		newbranch(x1, y1, gradient-30, length/2)
		newbranch(x1, y1, gradient+30, length/2)
	ELSE
		Plot(X0+x, Y0-y, 2)	/* leaf */
	ENDIF
ENDPROC
PROC dxy(gradient, length)
	DEF dx, dy

	IF gradient < 0 THEN gradient := 360 + Mod(gradient, 360)
	gradient := Mod(gradient, 360)
	SELECT gradient
	CASE  0;	dx:= length; dy := 0
	CASE 30;	dx:= length * SQR3E6/2000; dy := length/2
	CASE 60;	dx:= length / 2; dy := length * SQR3E6/2000
	CASE 90;	dx:= 0; dy := length
	CASE 120;	dx:= -length / 2; dy := length * SQR3E6/2000
	CASE 150;	dx:= -length * SQR3E6/2000; dy := length / 2
	CASE 180;	dx:= -length; dy := 0
	CASE 210;	dx:= -length * SQR3E6/2000; dy := -length/2
	CASE 240;	dx:= -length / 2; dy := -length * SQR3E6/2000
	CASE 270;	dx:= 0; dy := -length
	CASE 300;	dx:= length / 2; dy := -length * SQR3E6/2000
	CASE 330;	dx:= length * SQR3E6/2000; dy := -length / 2
	ENDSELECT
ENDPROC [dx, dy]
PROC newbranch(x, y, g, l)
	DEF command[80]: STRING
	StrAdd(command, '', ALL)	/* required initialisation */
	RawDoFmt('%s %ld %ld %ld %ld %ld',
		['Tree', stdrast, x, y, g, l], {putCh}, command)
	Execute(command, NIL, NIL)
ENDPROC
putCh: MOVE.B D0,(A3)+; RTS /* Proc used by RawDoFmt (see exec.doc) */ 

Just compile and then type 'tree'

From crash!mars.let.uva.nl!wouter Mon, 21 Jun 93 10:30:27 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:30:27 PST
Received: from mars.let.uva.nl by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o7E2n-0000KQC; Sat, 19 Jun 93 18:18 PDT
Received: by mars.let.uva.nl id AA09519
  (5.65c/IDA-1.4.4 for amigae@bkhouse.cts.com); Sun, 20 Jun 1993 03:21:13 +0200
Return-Path: <wouter@mars.let.uva.nl>
Date: Sun, 20 Jun 1993 03:21:13 +0200
Message-Id: <199306200121.AA09519@mars.let.uva.nl>
X-Organisation: Department of Computational Linguistics,
                University of Amsterdam
                Spuistraat 134, 1012 VB Amsterdam, The Netherlands
From: Wouter van Oortmerssen <wouter@mars.let.uva.nl>
To: amigae@bkhouse.cts.com
Subject: GadToolsBox sourcegen uuencoded.

 
                SrcGen GadToolBox source generator for E
 
NOTE VERY WELL: this is NOT an official release of SrcGen, but just
an interim version so that all those that have been waiting to use this
software can can get started, until I get my act together and write a
REAL version.
 
I know everybody says the following when distributing their software,
but to this version of SrcGen it applies specifically:
"Use this software at your own risk".
Don't assume this program to be correct.
 
Now we've got that taken care of, let's get to the workings of the
software. First of all, you'll be needing GadToolBox v2.0 or higher,
and have the gadtoolsbox.library that comes with it in your LIBS:.
now, with GTB, make some simple example (just a window with a few
gadgets/menus etc.), save it as "bla" (filename will be "bla.gui"),
and type:
 
1> SrcGen bla
1> EC bla
1> bla
 
"bla.e" contains the routines for opening your interface, as well
as some routines to handle idcmpmessages, errors etc., and a dummy
"main" that just waits for one selection. here you can put in
your own code. see the commandline template how to stop SrcGen from
generating these routines.
 
That's all there's to it. If you have problems, just check the
source that has been generated. If you can't figure it out, send
me mail about it.
 
Here's a list of things not implemented in this version:
   - check and implement all possible tags
   - open screen.
   - Wait4Message <-> IDCMP
   - Other fonts than topaz-8 as gadgettext
   - hotkey support?
 
anyway, have fun with it.
 
Wouter.
 
Wouter@alf.let.uva.nl
 
here goes: (about 10k uuencoded, 7k lha)
 
begin 777 srcgen.lha
M'"8M;&@U+;T9  #8.   XY8B&0  !E-R8T=E;DF8$]I\ N[5MM.._-QR5UUDX
MK)IHDDG'/-QN-N11MR6VV$TES\DO-M2)KR/+SCDLMKBD:;CL4;523D<"AS HX
M:ZZ\:E# 8Z\8*7KK@EI-=,=>"\:4+QIMKVT F.@:!3KUM(&@6=<]>?/FY[]]X
M]]_][R:;@0EH;MQ>[M(XVW)3&TG_AD_J8SG[W7>@/^<]<'(-4:^\MC*;8QMAX
MFV&V/A;$T?RVMKN,G"J)NICX\$W,^'Y_]-N:.SG3;6Z:Y7R?](_E]/\6NN=QX
M]0W'PE%?^S=R+^25?A6MRUSYIE<QK.M;QK\N^TZEZIUQ[,?O3_[6.USE<PWCX
M #T(>8;?S;*/Y>=SAD^9AF-^A &O(#Z( \P 93@'E@#]8 5' /- 'Q8-R$M]X
M 7<NU7:S=]<X.-/MIF)OYTJ=QC8F+0Q\2AB8V*X!PYTJ;P<3@.X+ARJ'!PL*X
M:Y?-*,;P;:8UF[CCM96&]@S&N;806LJTIJ!N(=B_X+"H%//.S>QF-=%2JPZRX
MPW"FO%U@![92JPNE8#)AA>_%?+*OT2KYAZ]=!:Y^'5#&]]80Q?^-8P6O4C]RX
M3@<#[:_R>4@DT\?'7]?.X]JOG<Y?UVLH5\M?U^G-%>1"O[?;&P3&A?V@3\T X
M>A^L#T70,UJUN<[F(I]!%/HHI[\+3I_2S3&J#M+]2/CQ[YKHS3;"Y:S44])%X
M.5;P6N0/O)'WR0V'D*YE/],._Y-K>M>2'EU2E3OC&>FTINK^&?RSIVKF;*H4X
MJ;>Y,938M98KJ)IA34G:[&](VGC^7F^F<[B',(G-I[<.%V?ZE_7-4*YEQ\@9X
MD7[CI'O@FY8!XB":DBF!%YT;TJ>F3 KG-D72((ODGRM"H4X;66I<6AMQDB#.X
MIFF.Q&A4]4+Z%"KZH7T:%9U0O?J0<[H6YD":RW--:.<=EIP<:L">B!*!Z0]QX
M[)!P!5S+?QCJJ61U+N1 GXKHFXS"$YH8[T:';@T]$Z!@]Y=#9T;N4&+YIX0:X
MPF(YV6&KAB+1VK](F(TR#;\LFCY0<7TD.3.B8::*^<A,^6$'_2!]2=#R?"H;X
MKLDU.C1#%>F*OKFWTU^ ;4C[5C[4)>SG9L;TNN/)CJD,QT\VH0?7ISZ#SE4^X
M2?23)&=*A;<VD+4(7ID"_RI@-MI"8#;;TSWY1J:J$ 9Q_*/?M< 11X B;P&NX
M0$SZ&>2P@=@>#VBNO+.NJ4ITATIK3BQAU*.'J XEQJ-,=J/,.X\85^AN8MT8X
M@S'G?&9='BV0\\=-.(Z?(5S-C\6DUNQ-4F-L_9'WH#[Z0^^</OC#[_0/LT?9X
M!W+M<="TF"TU-K<],6]CSSKK--'[I$WN:A-SPCG5\0&Z3]25A0>],4!K<C_7X
M')MOX!-SS4-5U![I\'*-69BN9L+9+;=C02WW8/ROX*6^Z?=@VGUJ=0KF:_\QX
M"[Q.+U_TBO[1.+['N1HWVPKQ7&+G&_0.-T&0GV025'+3I'J3,[EJ5A]$U,M9X
MWFZ334-.>ZKTK0R@8?G<U&FK-!YU)SR$9YJ62P?K)1&U]5*(P?(*_\S1P_QRX
M87EGPM/QVV,V)O5\$(#D'EK1";3HA-[D$'MM$@QCY.Q#>:;S'4;.3=)S4G.TX
M_X) [ K_P=$@U1!X6@'V'L(0V#G=^#S5@? 1!S4BSV*2CL.8C3IV;>E.<'INX
M;^]0Z9"A[-7,L_L:)I\"B:0]>S^41?FI1FSX!7]\XM?C4M1M_H SXNH[[/:SX
MI>U]QK-@KF:[S\]%2K$(NO_0E!==\/0377_>(/N=$/]?W#7"5S++I>V:_@I*X
M=E]/VQ_=D/PO;']O[C?0L]E3^WFZ=);L><EMMJE_Z(_3R#L>4.'6;-]AR2GIX
M(;KY"G#$":(=3[W8Q^4C'HEOPD;6^^-31 'S4RBTW:HVV<US)Y9R.;QS@YIKX
M@)>?8_"#]DA)QJ)DI=!.SR=L=KNM"#&QIB3/MTJ'K?+1F^&><VXK#Y.A3E=2X
M0RWGW+]30TU*_5N[U(NUB=XMP;J:&HHC7LHUI]S0DKUMFW)7K8"49M/'1)74X
MH8.44>D\E*6V'X"P>23O>D?152S$[2=\;I_:<;J?=WRM@NUE(XMM4?BVG<#UX
M6Y\2BW/@HTN:+<TK>Y*#KS[6Y]A^P6.A;HTFWVA]@$*C6N8> [P,[0^F*%ULX
M#.MUK*Q.9LT::="P=/I\[7_ZGKO,AIH9TY;JT(*"'7^4VSFO^>A":.9(H]PEX
MFM?,*!_*0]^JT7OU=%0:EWBEG>V"'JM"#^O+9EUW3;T83?-;=2[HPN@SXOITX
M"D?==+X;;I3!8U./H:"^N\;0.:GQB.?@I4]3^1+/3N]2SVA3%=;5.GI7ZD\8X
M9[[D6>FI7ZP[ Q R468-*B'%UC85"LZIV^=#6HE+??1,W3?9I3QY;F@G2AO-X
M^!V&\W+5S-9V^>OZ''YM%S^GI7TNAS:*EZBE?K)1K+?Z#/ZXM*>RW"6?UW]YX
M7]JA9>S=S]'3_/E\@L/J"R\HK]/U'GM7#C!T]*4NE6?@FJ_I#,ZDN-/E#C3GX
MXYO,3R^<,VEXX(_2+@?C:#J\G)'%O[OE7F3><H,3VPNJ\CRFLM($2;ZSE?"0X
MCY^1_EU",:[FPGM1W+>;; O<#J9OMSB]YD^?FFIV\V6ISZBB=57HG!L9.B%"X
MTFF.%?7?K--S[1IJ$8WJFWG]8V\]TVT\$F)Z2DQ/2&?=9B<0F)C&R?VJ[R.LX
M;^0Z;Z;SFS?64C?6=A_ WUGM&_D]8W\FB;XS9O4I&]3^+^!O4]HW^=UC?YU%X
MWO/;-^32-^3[C3\GVC?YO6-_F_L@M$ &#H06@#XG[H+3XWJFWE=8VMA3Z,/1X
M!#JCUIV%W_'+9E$KZ=5FO+G_O_#3.37[1SO ](B/E33!A9]*O='V,:O):::\X
M6BG>4>.FFROUIV-I%_VK>TB_L\_9QE&41R_P^_Q)M.1=W:N8^:2@JGF%HGY1X
M:B=H!?XR3O*;3M3PF^T#N_*:RAHY\P87DD09I%_9S=(1?K@-^1HH+N"PM7-TX
MI875#"RR(<%(TWZINFHC;DANG(;S)O7$-MAJPS43[U>$A?WVH;7]]4)RNLYQX
M97YTWKW2F]],AOUR&]]-JJ(WE$-\4AO=S>P=5-[_7H*GK.(6%VDVKHX7O-'"X
MR"PHUU7NX(O[9,!;W:%?@Z&QJ]?$'U*<WF=F[RSW.OGE.NUIM0C:IRJ.WZ71X
M34[M.Y2>*57,>?3)&\M*-UW)I=9?*=ZR^LN"[>/23&&B!M2;3D1[_1(\QPC^X
M1H$>NZ'5(]8?>1,C;O23]5FZ)/K28?D("YM'P"=2GRUX\*>9OCLZSYR/$&M\X
M],1/]/UL_AQZG[24+U?W-#@:N]Z/4*E@?'([^@D/[O3D'\(@Y_+'CQVM87?3X
MU="CCQ$+6<AN(6L\0L"PC ]7O3F\7/[TZ-$5TC]HX1WA,9S4L9U=.1Q]%.)[X
M'\C>)['T-#$UO.3#'V/S-$/RB#X*4AK>1H=4$3NCO@]CJR&^)GLS,ZX?;&TXX
MW6*P?:@QK(>&CLAYS>R_Z'W[X^_YCZ/#5V7U1]^B/OR1]_F'WWX^]Z.AO0<(X
M_CFM #P4^,MLMZ5:Z?/+V2I7[@J[$_:?%;TKX0,PW<;(O&VV.45?03A['GE?X
M^Z5?W"K_Q*OZ)5^$5?Q"KR"KX1Z0E_J.)?SS=J ^_(?O"KCE7MRK@I1>QK2OX
MG2<,GL:=(?6DD^MZ!5_B*OT10/,8ZW[)7^058\7F8>1;UOABL>1;UOPR#XY5X
M\$J^Y*N05<0J]J8\G)M;L2OZPJ^P2B]AG"NJ"S\]M9Z:Q-> /_ZG#V'YRK],X
MJ_^2K]$J^45?UBK_N*LFOV'S2K^.5?P2K[TJY95[LJV"KNBK[8J]@5=<5?NRX
MKJ"\K:27U_K%7SBK_V*O[!5_4*OYY5^(5?QBK)'Z^<59(_7WY5[DH%^0Y NRX
M;4@/_*0\HKZ_6E7_&5?7IK4S2K]@JR2]3\A5_>(O\EPO^*;7 /YY#_,*O^PJX
MRB_4]\5?>%633U-R5?;E631U'Y5U*:]842^L_&5?+*LC?K/&*LF7ZSX1)/YSX
MB3UIXI]9C$/P"K;9?YKD+_?&[L!X9#]L5?9"@1)ZRU/OLBLI/]96%67G5Z[IX
ME67KPZXF?UWXTROUW^Y7SRCAN==]4K_TBK^65?@E7\ JR3>NWQ5KE7"*LI/ZX
MXI/ZXGKUWNDUZMHJR1?5_F*O\)5DB^K_R*LIW]7XY5_U%7WY5\0JR>?JR:?JX
MR1?5D\_5VQ5J%64B^KTB:ZTH9ZWUB</RDZZ-^K@7JT>^O%HT@PMW<6]O5NX6X
M87/]. 5OF5U8FXOI+)[LF+W"T*$NRRO>N7F(MW>)&7JK#+"UTPM)O$C;V1&6X
MH@+^$M'AWE_%CQ%[\]]B]A,L*H.ZL-F+NE65CVX2[$19B,M)DGNQUX:K&>16X
M%I"[#-ZO?24XU6'N8C"Z"+#C+R5KM6)=K(1"(M(9O*-YA6[A*L-IPZ(8D,^]X
MOEKYPG746-&/;08W!/<+I72&O&780C25)CJWJ!\B^A28;"RT>Z5C1CD:D$I7X
M&\E%CQUF+Q9MH"+U_%B,H6>]5W;HH7'1$6/1$18[@B3?2%F(45F]2U.&':+WX
MKI^399BLQD'QRQ#O%H>Y#NT)@EBJ%>NHRMVBQ%B0[U!1A1EX>YD))L19E6+&X
M*XZA[B&,I<E&6NF31E=XO?,JX"[$4( JS%7CN Y,A6'%CW;E]-:\+<&DLL 0X
MK@+;N*RB)]L RMNV=TK&<OQEX]WGWSQ6Q;J+#2:&PL=</7968O5XBS@2ZB[MX
M:)=15HT2D&$,<96&M2!K1 UD )-(#>+K[EP B,58,3=P=*Y=+QV7<9&9W*V\X
M.ZML#$BR9$A=W'0KZZNEF,\#?KL;E(5P%?"(/1!:-X0=P[Q4192#L%6OXQTRX
M/;.Z(]>ZBR8L(0%I!LAI* JS#,)>)O'+DA=E%N\#QNX<$HNMBJ,W1[PFS6B"X
M34Y75A0]Y#!D.Z]6$M&BWJMVB[%CLWT4[TCW!-&)5;I<R$J2#D,+;J*)BCVYX
M.\DW;.\D+-VTSAH3>[NP=UHRT-%].E(E#TCY#MP\2CMU&F [>NEXT9>_3HOHX
M@*C!?(MUO$)6-1V)%/I3G?]'B.G])Y6B(MR%H<56,VHX)#$15E5! 1@+ON.XX
M=S(?JJ&^H$7@0J,B4IPI, S)1AU(G&=MLV"2%,%=N3&)#)F/NVYF$A"UP2@"X
M2#8;RB)L;MD\+"S$F&NP#2S>QPAT->/$58WBS#"["0=U?1HQ]CX]W=N3E(%$X
M&DP\!48^_#O68]ZXH;+.[=M@_!D6Z6B;+/N7 N1MU1:PB[> E.@3Q=7S;:68X
M4(9R&(?$"SH\P)<#Z42+IV6*LLG.,6.[(JB['OKV$A"Y+.>)%U,HI[<9$T%UX
M?1X:;L9;=#25/H3T;]TNQ>JLI  D(!QD("W@7!96(L=+)FYA47$S#%:#HF9!X
MY*(A]--=O8QT A/?.#1M0KW5U)69H@$VD;B8M0]X6E:FVB9(G1N,+#HX:\C>X
M)AD/=*R'U.9L6W,V=S\-@2?-H6 #"RL1>/&WB;N?BDJO#A)V?P[(Y=P-R%0+X
M2Y*W&BB"5-MN!HA*#6V+D*QEF65DW$:-2;25-3;"6(KC19+.ZBK7Z;HT@%KMX
MO!(0R$N6(A7PDHCIMW:PWG8L--Q103+1;JJ44R-JIP)F-/EX.-Q<6?P)TN7BX
MVEK5 9(87AU54,0HI%NE(="=,AVEJH-LB.I"854R$BD9JRG\7$Q1GQF$!(DNX
M9*XUIVEQ<%?XLK$H=GPY<^?*PY=H,9BX)",:;+Q>IG)TN;C3J$N=.M- :!P0X
M>?+H8\UM)MO<(!NY&D-0..HJG#E8AU4443>=Q\N<<+$6NE)<Z9B3Z&UD,L*,X
MKJ'WD*I"[RYU4=%"';?>V>'+H*<#&Q:$O(H6<&S!JE4):F'*P0'%^9C<#A*<X
M7?BR?#\3$GX\J8IB8N%C3[."@D**69U64L!DJ&-C3)]M,Q-_.E3N-8*<3LNVX
MV S"!R5T=,'#EXN//L^Z00EI4_C,2^]QY<^@K.PY]I<0=[L[B"?_9P\;'F8*X
MF+C4%.YGUYR7PK/N@'WJ4^%6QV7==T=<DO\)\IUD)E-)U(01MB"4/;98, V(X
MQ,6ACXA9"#0XTV6,$.#XLJRA*S@=J'#E"*?,;>[H8%W+H1;V?AG,-MCSY<X[X
MC[4F/IR0Q-MP)DJ?/(*,X<1MT<<I&LW(BP]R0Q1+8BRN-@RR#B:I89BTHYE.X
MUL?EZVJB['5%7TBU_:5<25@X,Z6XAQ%FCG2Y\">:DX00M<*7AXF*Q+PAG>"=X
M<+7/&+8N#1%066+Y9T?GL\I'+;=NDYHZ%R3BHI;Z\1L</&XDM2AP9<^6IB82X
MG&QL=29B<*6IK[?]Q4+0$)#F)<V9QD.9"YI0@YV+ 7X@<D!U/5=LV1[X<YZ,X
M@QN0N(N%"]2F?3+!:-R$;^5/",+B/V,F1&TL^I)'9P>R[83K1P8D:0[ =<Q'X
M47&Y#=LD3@7=KMXPF&D8^_DI--G?XT[A;^7B\#@V?5SL=>_A%FTS7B*&70W2X
M+440 *G*4$97K9M.]^,_C86%QMKMQBK;B[\,6QINPBXM ^:MITJ?0.RG8=IMX
M+78[([>:$JA0G'T3!AI7OK;"&B=9P=H><+NMJ?18..=U@D,Y_9K1(3(M&%")X
MW0$.IL2F%AQE4X2^Q9E)C85&"!A8;/<6G'PSG=MR&>.S]B/K[*?AGT8(*+2-X
M*M-H:].AH@@,F$PT$P/1CLUV%E,P3V,A%BPP+ P1! W#,E1#(8B:SLI]F:X[X
MI%<$V]-8V4S(,?)P4VADAIN:'%'@[(8FEQ9X*2G!2A V<HDZ5Q84OB2YD+&RX
M%4[3ULB-J""W2^FWO4 G^H1R"A%#H#M4:B1WC03JH>CC6M4X;9$X#XK('4C4X
M0^#93X)U+=.2%TV.R,?D]JL(X/YUS$%AKA(Q"[?MB;3IH5092@N;TV];;+!;X
M;NX9T)\E26P1,G$2>++XJ=N%UFB)N=KMX:-IZ[0,.SN#AP39_ [&&*!MV*-.X
M-GVA"+5S#AAM&'2_3O[N\"Y&#1"XZ2[T]ZT(-UB3+E3CX230G8DUPF=65O0XX
M0R-0M&LOGH,C0%(R29=#1*\%M!MN/"@25M%QA]K*35?_.L+8X;D>=\&3!;E<X
M=>.EOR97D:F*4D9E8<88A$Z:<'&E#8"0D\]5MDK;USJ7_^E*>"D7]$ 9\]^_X
M4(+*MHT@U-P/D@&]ZD&\-/%'M/?DL7P.L61UM3\UDY;/P?,-O113$D6RSU.2X
M3UY]@<L0G4R@U77I7DYB%QR9Q,>Q],9._?2+PTL =##=<64DXV/.X X]DO%EX
MS@GN"IO^,I)8ACFKJ<2XMMD?=EJEY#*B\D=W"2/#=;?LNVJJH>%ROHRRCFV8X
M?D2HU3\27/MZ(1.AMB8V+;N67.1FI1&I4T9'/")2Q'$P.(PYTJ;P<3@3[='*X
MFJAK57UZ&DQUH+C3H+>@_!/N 06]LF"G=,@MQ(06WLU1IL[&W\R7PYZG%X.)X
M,EJ<6<#UBX88O/0Q<W#Q)\\X!+A%,&7A8F*A'9[@J[OHM$.:0V41 ;@MC\(%X
MPSO+(1S#G-GC&R%"X!9H4K!4E#E_F7QQA<)2]'#\ :)C8LLUE/KQL#I=.<KIX
M2&VMK8*-;2S6V'CXAJ)3;X+YE>'B8<H*B-*)DXL;")/U(F8TX[ZMFI:<"U4VX
M7O/>=DI8ZVRLCFN^'CKXRUNJ=EZL6/;R18'@9T5WJTE%:?(,V\DVXX[66/9]X
M[93&-40^CTS+9AH,'(-4:Z8URK'L(_EYWLV$$>S+A;A[A&:S?D?:UU3)^)!FX
M-<V/Y;7,CX^JY4?''H@]?85)_=6Z3HD)].UN3^^O:R]QDX7D3=2+/J*3&NA'X
MY@?AM;BWV6RM^U[.XM]I<6X9?-QZ!K=0&.PMS5&'46JK67'QSH:I61\>::XMX
MS::PQC5( U;&3)R<.K_PJ<*KJQ[.5IK"Z4UH^#ZF'L;R<;9VC6;YF3WE.H/6X
M]8>JDY-9^'#J?>\MK,K!ZBMBY^5<]I":Z?4R_$-VMHUTV\[XGQ/N_;20>S-AX
MO?V$'FPTD.BSG;(9SBTVIUW"-M29[" ^IL;P&D%.Q-^Y"3M).2:Q[AZH>FJWX
MO>>R*5>%TAZ?Y3W=RTUOO6CXYTK.30E]75@'A5 *?3V=J$KQ&NGR%>%3W%-5X
MW)J;A:H ^G]T [SS_5_G^_Y\FYL.<#CFQ\>U!A:XX;;R<-ZI<VTQKD:^8UY-X
MK@(^\D?>1'YB74J!QOJ^ <VJ7%2&PG]'3I.B*/-+T??-'T>ROK?0'T>Z;K>2X
M/O''T>E[K?%'WY0^CUH]:/2]UO?#[0'V8/H]TW6CVJ]:R/L8?1[5.M$'=;V8X
M^CV\]:/=)UH]5/6CU_]:&!5H]D7 #*8 ]:7 !_@>H/H]T/ !_@ _P ?X /\ X
M'^ #_ !_@ _P ?X /\ '^ #_ !_@ _P ?X .\ '> #O !O@ WP ;X -\ &]^X
M#>_!O?@WOP;WX-[\&]^#>_!O?@WOP;WX-[\&]^#>_!O?@SOP9WX,[\&=^%G?X
MA9WX-[\&]^#>_"SOP;WX-[\&]^#>^!O? WO@;WP-[X&]\#>^!O? WO@;WP-[X
MX&]\#>^!O? WO@K[X*^^!W? [O@=WP.[X'=\#N^!W? [O@=WP.[X-??!;WP/X
M[X']\#^^!_>@[O0=WH.[T'=Z#N]!W>@[O0=WH.[T'=Z#N]!W>@[O0=WH.[T'X
M=Z#N]!W>@[O0=WH.[T'=Z#N]!W>@[O0=WH.[T&]X%O>!;W@.[P'=X#N\!W> X
M[O =W@.[P'=X#N\!W> [O =W@.[P'=X#N\!W> [O![9-X#F\'OHW@.[P>]G>X
M ]O+D?0?WFT'T(&\'N0W@0=X-#EX$+TH*^E^@/H+>E'O3]*"_I?#'T&/2^ FX
M./2>P"/*+6QH-2UH P  *08  ..6(AD   U3<F-'96XN<F5A9&UEY4D#4VN:X
MU;CBAN._@#Y;@[W)2P 1@"J%P%[M*:E;W"[J%1B/9/21FN-Q-N66'QQ_\W-TX
M!(SANMD2547__OI"SO-Q=Z[?)[V]S_4HOSA897FXX+D^!7#[P4KX_+RX%_'#X
MY_R7GP\/#M*6#(D/@ZY+<3[KF6,6TH&TUQ,=#;7*BY9R+^LXR4,.QTC@S$O0X
MX18]PVX:2N1+:T<#QF)\V"_0RY& UHMDF.O*3RSGW615%]TM%P,K!J*?;SD4X
M9+A([:BS=)C2XSZF.I+LD,X.3 X 4VEI!DC):OGP_/PZ >M2N)<W/T(QT=>3X
M[=2BO6(V\P@+6OT0":8 (VLC*# 5)A; V0+H$*E(:Y/HCO0Q]4*)@-&636'$X
MHY'8P)F#QKVJW?OL6^NE$$%U#%D_1Q09'GNK5\'NWC08QSQVQN4'WP7BFY<@X
MASX0.R0)GQ!)T/>%$O?*BI27S-$M@C-U$TY;XS2.8N,M'PY@HQ07#GZK)67ZX
M,A&2=8"NI IO#6#;G&=J('_L/?3[:_K(0PP9>%NJ4BWS<M-AO7;(8>/)_K6UX
MG*"X:T#5C\0B.C)8(D+'4/'AQ[OIVUJ#*54[??Y=U18@C!) @$68Y-,C]5S_X
M_L2,1+&*=:A]3(K*X]%#=P9X_5B;LXD<K*_;4'= 51CXENY-7N+V7,:;EC6-X
M&4+Z=>N_-F[VT)$M<C[5*^SW='.'?3EX>_IPI_E3RQ[@5726QU(AP>D+P94JX
M<_(W(G$S-.B-R[#J0%Z&UJEQH8>N4#18  @RLMLQR"6Q7><:B.$'PH4ZIS<6X
M5N>..JMV(WK=17IHPE1]M]<$[%I;))/@@TYH"9U(RS1?U=8\6/M$ (G1P T^X
M* 8!,I&%U6*D8!; 'XR?ET1>Z#\5;>$':DD?\)HD]Y +"/M+Z#?]\S$R59<;X
MI@N<,Q-SDT\09ID&S [.>TFI^*/;P4QIX*-MO.WKH@* I=<R_.$WJ&_A]S=:X
MH*V$?:2^3T."4Q_6@&6364G8*OI0UPI_.- AZ-<23O_7<[4\J79L&T8#KBYEX
MW)\8L!$%?;XTQ2/X4;( 9UTZ/F&:^[QHZ9?AV>XN/P]_C^U.W\I^+:X1*2(XX
M:$+,O^^S[TA72:\C]94Q>#Y<S'BWSRR?"7XJ$M-=%ZU44V[-W2L0-WF#P<.OX
.!^2VW5CP)5Y^BZW-4  QX
 X
end

From crash!freenet.carleton.ca!ad047 Mon, 21 Jun 93 10:31:24 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:31:24 PST
Received: from freenet.carleton.ca by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o7RCw-000086C; Sun, 20 Jun 93 08:21 PDT
Received: by freenet.carleton.ca (4.1/SMI-4.0)
	id AA04151; Sun, 20 Jun 93 11:20:25 EDT
Date: Sun, 20 Jun 93 11:20:25 EDT
Message-Id: <9306201520.AA04151@freenet.carleton.ca>
Reply-To: ad047@freenet.carleton.ca
From: ad047@freenet.carleton.ca (Stephane Costisella)
To: BWILLS@kirk.safb.af.mil
Cc: amigae@bkhouse.cts.com
Subject: Re: Joystick Controlled VHS


>Have you received any replies on this yet?  I haven't seen any.  Thought I'd 

Not even one reply yet. I will send it back later for the new E members.

>I am interested in your VHS setup.  Do you think if we come up with a solution
>that it could be used to perform hard drive backups?  It seems that if one

There is already a public domain program that do this, but I don't think
it controls the VHS pause. I don't have it anymore.

>That's a hardware function.  I'm not too optimistic about simulating the 
>joystick fire button with software. 

I'm shure it's possible "Only Amiga makes it possible". On the DigiView
Gold they use the joystick port to rotate the plastic colors when digitizing
with black & white camera. Instead of the fire pins it can be UP, DOWN,
LEFT... Any two pins can do the job if fire already make a connection. 

>If you still need to know about using DateStamp() (this info I can send
>immediately) and gameport.device, let me know and I'll see what I can come up
>with.

I don't need the DateStamp(),date,time,timer anymore. The only thing I
need is the gameport.device & the IFF picture routine(Overscan), maybe with
the iff.library or iffparse.library will do the job easier. I tried to open
the gameport.device like the serial.device but without success, the only
thing I got was a mouse blanker & a GURU.
  
I had another idea, I wonder if it would possible to build my own serial
port in my VHS. The same (or similar) as the one on the PC VCR, or studio
S-VHS.

By the way me & a friend are working on an animation & we will need the
gameport routine very soon. I hope someone will help me.

--
------------------------------------------------------------------------------
| Stephane Costisella, Hull Quebec, Canada  | Talk me about: //3D Raytracing |
| Freenet: ad047@freenet.carleton.ca        | ------------- // Programming   |
|___________________________________________|            \\//  CommodoreAMIGA|

From crash!prg.oxford.ac.uk!ecs.oxford.ac.uk!m88jrh Mon, 21 Jun 93 10:32:38 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 10:32:38 PST
Received: from sun2.nsfnet-relay.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o7gvP-0000EAC; Mon, 21 Jun 93 01:08 PDT
Received: from ecs.oxford.ac.uk (ecs.ecs) by prg.oxford.ac.uk id AA23949;
          Mon, 21 Jun 93 09:01:00 +0100
Received: from ecs.ox.ac.uk (booth6.ecs) by ecs.oxford.ac.uk (4.1/ecs.1) 
          id AA13919; Mon, 21 Jun 93 09:01:55 BST
Received: by ecs.ox.ac.uk (4.1/ecs2.0) id AA00311; Mon, 21 Jun 93 09:01:53 BST
Via: uk.ac.oxford.prg; Mon, 21 Jun 1993 09:01:19 +0100
Date: Mon, 21 Jun 93 09:01:53 BST
Message-Id: <9306210801.AA00311@booth6.ecs.ox.ac.uk>
From: m88jrh@ecs.oxford.ac.uk
To: amigae@bkhouse.cts.com
Subject: The Amiga E development environment


  I don't know if this has been answered already, but is there any news on
Wouter integrating something like his MegaEd (text editor) and the like
to form an integrated E development environment?  What about Object Orientation
too?  Is 2.1b the latest release of E?  What about making libraries with E?

  Well, I didn't mean this to be a kind of Spanish Inquisition...

----
   _____  _
     /   / |    /  /
    /   /__/   /__/      Jason R. Hulance
   /   /\     /  /   <m88jrh@uk.ac.oxford.ecs>
|_/ . /  \ . /  / .

From crash!rcbins.mu.wvnet.edu!AMONROE Mon, 21 Jun 93 15:47:49 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 21 Jun 93 15:47:49 PST
Received: from byrd.mu.wvnet.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o7tVy-0000FmC; Mon, 21 Jun 93 14:34 PDT
Received: by byrd.mu.wvnet.edu (5.57/Ultrix3.0-C)
	id AA02839; Mon, 21 Jun 93 17:33:46 -0400
Received: From RCBINS/WORKQUEUE by bins00.mu.wvnet.edu
          via Charon-4.0A-VROOM with IPX id 100.930621173529.704;
          21 Jun 93 17:36:27 +0500
Message-Id: <MAILQUEUE-101.930621173520.416@rcbins.mu.wvnet.edu>
Date:         21 Jun 93 17:35:20 EST
Priority: normal
X-Mailer:     Pegasus Mail v2.3 (R5).
From: "R. Alan Monroe"  <AMONROE@rcbins.mu.wvnet.edu>
To: amigae@bkhouse.cts.com
Subject: re:  E apps


>>Has anyone written an actual, big, useful, intuitionized app of some
>>sort that they would like to show off?  So we can be inspired to

>Nope.  so far I've only written useful stuff, none of it involving intuition
>(except for my rewrite of MemBar which uses a widow, a close gadget, and IDCMP
>mouse messages.)
>...
>time and energy.  Don't really know what I want to write next, though.  Any
>ideas, Alan?  Anybody?

I tried to write a version of that old game "MasterMind" this past
weekend, but I couldn't get it to work.  I came up with a way for the
computer to evaluate the player's guess in my head.  I tried to write
a rough version that just ran in a shell window and accepted 1-6 as
input and gave back O's and o's to show you how close you were.  But
I didn't know the best way to hold the data in memory.  I tried a 4
character string, but when ReadStr gets 4 characters, it thinks the
<cr> is valid input the next time a ReadStr is encountered...  Dunno
if that makes sense...  Naturally I'd want an actual game to have
gfx/mouse control, etc.  but what I need to know now is what kind of
variables to use (I know Ada if that helps) to keep track of things...

*used to Ada's strict typing*
Alan

From nkraft Tue, 22 Jun 93 10:28:29 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 22 Jun 93 10:28:29 PST
Date: Tue, 22 Jun 93 10:28:29 PST
Message-Id: <9306221828.AA00h6m@bkhouse.cts.com>
In-Reply-To: <m0o6l4A-0000XDC@crash.cts.com>;
	from "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
	at 18 Jun 93 13:19:00 CST
X-Mailer: //\\miga Electronic Mail (AmiElm 1.15)
Organization: Argus Computing, San Diego, CA
Reply-To: nkraft@bkhouse.cts.com
From: nkraft@bkhouse.cts.com (Norman R. Kraft)
To: crash!amigae-transport
Subject: re:  E apps

Hello Barry (Barry D. Wills), on Jun 18 you wrote:

> On 18 June Alan wrote:
> 
> >Has anyone written an actual, big, useful, intuitionized app of some
> >sort that they would like to show off?  So we can be inspired to
> >reach some new heights in our E programming... :^)
> >Has anyone written any "demo"-type code or just some snazzy gfx in E?
> 
> The biggest, snazziest app I've heard of is what Norm has done for the mailing
> list.  If I get any ideas rest assured you'll hear about them :)  But for now,
> I'm still learning about E and about the Amiga, and that's taking alot of my
> time and energy.  Don't really know what I want to write next, though.  Any
> ideas, Alan?  Anybody?

Well, the mailing list app is getting even snazzier with time. Aside from
the long awaited "echo off" capability, I've been making it more listserv-
like all the time. Soon you will have the capability to screen out postings
greater than a set size (specified by you), to get the list in digest form
and to request files. Still, this app really doesn't have much of an
interface.

I am working on a couple of very large programs in E, each of them making
heavy use of the intuition stuff, but since they are destined for
commercial release, I can't really show them off here until they're done
and I have time to cull out demo versions. I am one of the E beta testers,
and I can say that with the beta versions, E works out really well for 
large projects. I've used SrcGen a great deal, and written several 
thousand lines of code for these projects. Rest assured that if you want 
to code something big, E will be a great way to go! It gets better almost
daily.

Norm.


----------------------------------------------------------------------------
Norman Kraft                            INET  : nkraft@ucsd.edu (work)
Peptide-T Clinical Trial                or try: nkraft@bkhouse.cts.com (home)
HIV Neurobehavioral Research Center     UUCP  : ucsd!nkraft
Dept of Psychiatry, School of Medicine  
University of California, San Diego          Usual disclaimers...
----------------------------------------------------------------------------

From crash!mars.let.uva.nl!wouter Tue, 22 Jun 93 15:42:15 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 22 Jun 93 15:42:15 PST
Received: from mars.let.uva.nl by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o8GBu-0000WYC; Tue, 22 Jun 93 14:47 PDT
Received: by mars.let.uva.nl id AA16926
  (5.65c/IDA-1.4.4 for amigae@bkhouse.cts.com); Tue, 22 Jun 1993 23:50:57 +0200
Return-Path: <wouter@mars.let.uva.nl>
Date: Tue, 22 Jun 1993 23:50:57 +0200
Message-Id: <199306222150.AA16926@mars.let.uva.nl>
X-Organisation: Department of Computational Linguistics,
                University of Amsterdam
                Spuistraat 134, 1012 VB Amsterdam, The Netherlands
From: Wouter van Oortmerssen <wouter@mars.let.uva.nl>
To: amigae@bkhouse.cts.com
Subject: various replies...

[note: these are various short replies packed together to keep the amount
 of mail low -- wouter]
 
>> A short while ago someone asked about the existence/location of the CreateTas
()
>> function.  Well, I have found some C code which has two functions:  CreateTas
()
>> and DeleteTask().  The code looks fairly simple (it's only about 1500 bytes),
>> and it looks like it could be ported to E without much work.  Interested?  Dr
p
>> me a line.  I won't post it unless someone requests it.  Also, if you're not 
ll
>> that familiar with C, say so and I'll try to port it (but I've never tried to
>> program tasks, so you'd be taking a risk! :)  Later.  -- Barry
 
send it to me, I'll try.
 
--
 
>> *******************************************************
>> * Original C code ported to E by Barry Wills, 18 Jun 93.
>> * Sizes of executables:
>> *   StdC:     14,388 bytes
>> *   SkinnyC:   2,540 bytes
>> *   E:           856 bytes
>> * Note:  no explanation was provided about "StdC" and
>> *        "SkinnyC".
>> *******************************************************
 
Still, the E program seems way too large to me:
 
PROC main() RETURN EasyRequestArgs(0,[20,0,0,arg,'ok|cancel'],0,NIL)*5
 
does exactly the same, it's for kick2 only though. :-)
 
--
 
>> If only you had told us about struct ap_Buf,1 none of this would have happene
!
 
If only you asked me first before starting to hack yourself, none of this
would have happened! :-)
 
>> I really thought it didn't really matter about a zero size array (I mean, wha
 
>> could possibly go wrong with an empty array?) - oh well, I guess I was
>> wrong.
>> 
>> If this is the case with the '.i' files, why not use the '.h' headers?
>> Lazyness, perhaps? :)
 
That nearly involves writing a parser for the C language (I thought about
going for the compiler straight away, but no...), but parsing the asm
structs is pretty trivial.
 
>> One more question, how about the #define ap_First ap_Base? How would I get
>> E to accept it as a legit reference call? (eg. ap.first?)
 
um, also use a preprocessor?
what extra functionality does it give you using "First" instead of "Base"?
also in C, it's just an alphabetical difference.
 
>> Sorry for any troubles cause.
>> Son Le
 
--
 
>> Oops forgot to ask earlier, but concerning the dos2.0 library call, SetVBuf
>> In the includes and manual, it says SetVBuf accepts 4 parameters,
>> SetVBuf(fh, buff, type, size).. E accepts 3!?!
 
surprise! you have found one of those things rarely found in EC called
a "bug".
 
>> Question is why and what are the 3 params?
 
I don't know: they've been automatically corrected in E v2.3, but
until that one gets out, you'll have to cope with it. suggestion:
use JSR SetVBuf(A6) instead.
 
>> Son Le
 
--
 
>>   I don't know if this has been answered already, but is there any news on
>> Wouter integrating something like his MegaEd (text editor) and the like
 
MegaEd is a very old project of mine, and unlike EC it's buggy beyond
repair. this is caused by the even buggier gfa compiler (I know, I
disassembled the code it generates). The only way to make it reliable
enough to join the E-distribution would be porting it to E, but that takes
time.
 
>> to form an integrated E development environment?  What about Object Orientati
n
>> too?  Is 2.1b the latest release of E?  What about making libraries with E?
 
I did send a text to Norm some time ago for release on this list (he
was going to add something to it), that should explain some questions
about the future of E, so just wait for that to appear.
 
- 2.1b is STILL the latest publicly available release.
- OO is being worked on; object inheritance is already possible with v2.3.
- libraries? I would count on it anywhere in the near future, but
  all is possible...
 
>>   Well, I didn't mean this to be a kind of Spanish Inquisition...
>> 
>> ----
>>    _____  _
>>      /   / |    /  /
>>     /   /__/   /__/      Jason R. Hulance
>>    /   /\     /  /   <m88jrh@uk.ac.oxford.ecs>
>> |_/ . /  \ . /  / .
>> 
 
Wouter
 
   ____  Wouter van Oortmerssen, Wouter@alf.let.uva.nl
  / __/  "Einen Satz verstehen, heisst, wissen was der Fall ist,
 / __/    wenn er wahr ist" - Wittgenstein
/___/  ->subscribe to the E mailing list: amigae-request@bkhouse.cts.com<-

From crash!minyos.xx.rmit.OZ.AU!s924723 Tue, 22 Jun 93 17:50:26 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 22 Jun 93 17:50:26 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o8HRa-0000apC; Tue, 22 Jun 93 16:08 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA05111
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Wed, 23 Jun 1993 09:07:44 +1000
Received: by minyos.xx.rmit.oz.au
Date: Wed, 23 Jun 93 09:07:57 EST
Message-Id: <9306222307.2016@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: 


To Barry,

As far as I see it, when using anchorpath and ap_buf, the way it works is
(if you want the full filename) when you allocate the SIZEOF anchorpath, you
must allocate an extra buffer at the end of the structure to accommodate
the full string. Therefore you must allocate:

 ap:=New(SIZEOF anchorpath + MAX_FILENAME_LENGTH)

After calling MatchFirst/MatchNext() the filename is placed at the end of
the anchorpath structure. Since it is at the rear of ap structure, we must
do (ap + SIZEOF anchorpath) to get it. That's what the LABEL thingy in
assembly does (shorthand).

It seems C and E can't handle this. My own reasoning why higher languages
can't use do this is because you're pointing to a location that's not there
(not yet allocated). As a workaround, C allocates a fake (in my opinion)
array, namely ap_Buf[1], which does what the LABEL does (with an extra byte).

E doesn't have this fake structure, coz it processes the assembly headers
and ignores LABELs. So to get at the filename in E you can do the

 filename:=(ap + SIZEOF anchorpath) /* points to end of anchorpath struct */

or replace the LABEL ap_Buf in the '.i' headers with a STRUCT ap_Buf,1 in
the anchorpath structure to mimic C's workaround (unlike my modified
Iconvert which does something like a STRUCT ap_Buf,0) and re-Iconvert it.
Although this still doesn't fully address the LABEL problem. (In C, they
also do a "#define ap_First ap_Base" which when converted to E, equals
"ap_First EQU ap_Base", which doesn't quite work)

Cheers.. Son Le

PS. beq.S (the .S means a short +128 to -127 offset branch)

From crash!minyos.xx.rmit.OZ.AU!s924723 Tue, 22 Jun 93 17:50:30 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 22 Jun 93 17:50:30 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o8II0-00008iC; Tue, 22 Jun 93 17:02 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA05608
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Wed, 23 Jun 1993 10:01:51 +1000
Received: by minyos.xx.rmit.oz.au
Date: Wed, 23 Jun 93 10:02:08 EST
Message-Id: <9306230002.4165@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: eTimer.e


Could someone please repost the eTimer.e program that I posted earlier.
I've been working on a newer version and deleted the old and now would
like to have a look/fix/update of the other eTimer program I wrote.

Much appreciated.. Son Le

From crash!kirk.safb.af.mil!BWILLS Tue, 22 Jun 93 21:54:46 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Tue, 22 Jun 93 21:54:46 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o8LgZ-0000AhC; Tue, 22 Jun 93 20:39 PDT
Message-Id: <m0o8LgZ-0000AhC@crash.cts.com>
Date: 22 Jun 93 22:37:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: sysdate.e (OS1.3+)

I did some leg work for Vinny "The Vinster".  I think it turned out somewhat
interesting (and possibly useful.)  So here it is, system date modules.  They
can actually do some limited date calculations :)  It's only about 4K.  Have
fun!  -- Barry
------------------------------------------------------------------------------
Hi again, Vinny.  I sent that last archive to you as quickly as possible so
you could check it out.  Then I spent another hour on it because I thought
you might appreciate a slicker interface. :)  Alas, I found an error in the
algorithm, so here is the fix (but it's also easier to use! :)  Have fun.
-- Barry

begin 644 RAM:sysdate.lha
M+EHM;&@U+9\%``#8&0``>I_6&@``&%-Y<T1A=&5<15!0/6YO7'-Y<T1A=&4N@
M98+;!$QKM[6FW_N.^@'VX0W,!(PD+9-9DBP"V1`.HA;E59%5^#_`<3;8F_N5?
M'3E[W_M@`$&2Z6Q7:U++*[@9:Y*\'<#<#=!^Y.Z&-T$[H`VW0Q.X>NK;:=]:Y
M:K>6S7"<W!%LC_9RVSL!;:NU]X`B;]+C[B`78!R(+QG73M@:-$#QD.%]L5$-K
MC96)1\<#K<0&#HC=<,^#9D'H@%W`>(X&A.!S1.'B0"(`PGAYX(7B9]Z-T63`A
M_$'J<1@2S&O#Q5^"Z3Z4RJPLF[BPG6`,1S0SQ;6):O;K*1UEEJU>P2:]`^C!C
MZ?">^X*EB#?"WPV9X`,-%]H.=*Z",!D`E*")!H41!`^E[``8V+;,\</0S2Y0Y
MW@JW+E7S@U8"RU;\26=QHA<?OATF=C/$`R2IGQ405^*B"WDN-<":?163FP^</
MGTN4`,!<KW?+<M@O:@;5TIX;;`Q=M,9E95=5@URSO;X>@`9&6Z=(>%3:'ANC<
M]F:1<-RE/6#L_,]\5"DS3'AM[8\.\/"GM;@\*>YRK=4_AM<I.N=Q&?C-#BG33
M(#*D"P?FA[$&DI!M&AO8-?>IJ[U7#"X[K[VW*N];:W)(=C?/K[M27NN]:WWI<
M'O'?CB1K[_?5W^,^%!WN8\.M"W5(35Y$'K0&9*>VX.GL83,E/JQ[TB"(U2``*
MLD,TH!<X3DKUB&!X%\A'1%+Y+MP+K4Q-"""1'Q)G/!X?IP^TE87?'7MZ`]MJ<
M#;D:5$B]I8A=KP!9@$A"\S0^DAI)9\@[6<;ZS$0RMA1&TJ5:OP`ISV&K@/%`)
M-(I<992-C\'XO:C=!=XBL,:('*@0UE%L2UL!/356_)5V:NA6SL">M=7UC*V.D
M,YFB[&5!"@))%-^TG#H^KK/"'<.8X,T&:0X-^`<F(_6_`A!WPZ7#9X-78HZ(+
M0&?VN>U\P%#`WF-"X;F='%S'$.<S`<<S98PX3F;-S..N(Q29#R!NB!0.2=<G2
M+'6B>#LER:K?0,GO'?06,<5I*MZP=*R]#V?8,QB5$SX\.V]:;U*LI0983?)0^
M:U_>&Q@*MNM)<X/K"EE#[-*XM*7-NJ6Z`:H)9'^S++&HZNFWN>[)FV_C<[3G/
ME4%=KG&"HI+TU199G\4H<AV`B^8@7+;2X^5\(H'V"W(:=VMPZ(X1W)(P'4`D\
M69>@>PQH$&&K>^&$T(CV0+BRQP/@71OO0-N<[AV\NQE05I6;Q9II]LQ/G]5OH
M++WZXQ2`7\`&"N6*MGCKI`I(]E]`O!N[FK('@WPIU-P0C#A+4G_B'']&XE-FG
MI:EGZ2OETO8G>LQNEYED9&@/R>)#W][U9^J7-O\;"?;?8F5GI'0!<:1CRU2L`
MRJF]?Y,NI[F7;K<-A/QR9\DFLFG>?U.UA:5?QZ<YE7'@>)JY\"=\Z.".&$<)3
M:24?EGM%F^3K,RG3T_`G3\),/HR&5'SO]Y)V!\QE[#*7WF-$?X&AO98?[83%L
M,\S7#6`OOQDX@7;31R5Q8PR,[O>[ZL8;KJH13Z(;9X7.D<0?.63<<8D2?/3D+
MU78V)*'94-"Q&0D\L*6G9:\!],%BCFR@I8F>2-_'>25MCZ/D1-],:]$Q',J]J
M*8_HU$/S(DGIEJ`IT3`,TW[5ZM="A0`+1ASAA0_?\3-2^7B9:\OD5Z+F37%5E
MY9'4)7*JL8XDNEZ^,G9ET9?.)`#[(7$''./.Y']C8V`X,K2WIS&E!+4IQ9-4U
MQ:BRKUR-X_8%Y&Z,[-M`TV2GZKD=;B\4)[\$.9R\C>RG^>UMI]>[+V]'B"9JM
MA:47J\?',E=<-U7<.`1YO"3"]DAXHAGAIA_5Y<';"GYPK[J!:00&3XFTARPH'
M?P"!0(K,K2(#\T!*PR[M)9;5?U/:TM)L@>[_QO!J"=_0#=<HTZ7^RE4VO^E+?
M_P\5*G^2GHQ4/P/T/VQ6=F*BWF:7W8K*?=BL[L5G=BL_G%9N??*9&U_N5Y?\.
MFY8P32UL:#4M@@$``/\+```$H-8:```:4WES1&%T95Q%4%`]>65S7&1A=&5T&
M97-T+F6V(`$H6Y>MI?[GO@#_CN--C*$20)#@88S(P#$8,>$D986@9AK278X-Y
MXY6YFCA-`2+%BO*\+'@>)\%WI?!A\"7P`5\&#:+K&U&]=?=Y;EL!E1$XKL8KA
M\V#%)$Z2,PQ"O\C]H(20'!BD(`=MO!BT)28\:T`+`1%Y^C1F@(=?O@DSF$I&M
M5B9#1VITAB=5I"$XRVVV`8#11S,\"JRJ8`W[<9<6\.9,$9G@8'A.RRR%J=I6F
M!TJ$'!E,''*,Y4`((E?<@82@C&$AB)5Y4QM*5)N3CRFI*:Z\!:CM<7$DV1"=/
M+EPE<EZ[VVME:<M6H\*#QY7DHAU:A4(J@H_CN]J5M#?#FSY2'T0F3!BZ@\L0=
MM!0'Y@'>)"9Y"08\`IZA7QT"H@@(&8Q,\NS/O`_L@@Z8(KDS27`_L`06+(;]/
M>O4$+7O[+E4-(JX/;/IO!KA.^H#>PHU:GZ4JV]_%+_AXK5OPIZJ5!T';^*5GX
M=2HO:6EY4K*NZE9NI6;J5GS2LX/,IKFU^RO;O.K_>H(0+[,M;&@U+8`$``"<_
M#0``!*#6&@``&5-Y<T1A=&5<15!0/7EE<UQS>7-$871E+F5-T0.=:]NQIMS'0
MYW^`?;XJW<!8PDDDFLR10#610;B(:I5515<#X!B;;$^YRH_.7O=S8`!1DFEMO
M62M2RRN^+7);>'75MM.^CS@X[>M<X`A[WOQ/I!EH'T!@-!`=X#2ICA,E\OMFG
MJ!Y_0PP*CZXX'D`8,DL#YH@>,D]0`O8SH.!I#@<R'SH2"8PRGDPQR0DS\$L`.
MLF.)`?!].-3,=]75:L7B?2V59%DWLV4[`!F.:2D+:S,6G+*T=AABS:MDFPQQZ
M)Q^_U'Q/BI9@Z`<Z>ND`##1?:/"I=!.,R04E`A)I$H".)3V``SL5PT)P]S=7B
MN#G"O=NU_:#ML.MUS]E,[M3(_%B#O-!*=`#)*V>BH"_Q408[+KMA5/D=9S9?X
M:3Z9*`&@NVKW[W7`9N1O+Z5(.%H8NX&M2LNNK`;Y9Y^@/<`-C+=:J/#CX!X<!
MP_9NJ7#BJTF`\OS?**A5;K#PX>$>'(/"MP<0\*W%W,?&?PX.XG7YNHT4II,WF
MFH0&UH%L]^3R0:JT&X:3!CW]ZLOO5\LC\&_O<,Z[X-KBFAV6(^_N\<_=@\%OP
MDF>\N*5"=_?Y5]_M/E2>&^>3>A<RT)W`F/Q0&YJ>N1]_DPFYJ?63X)D$1JD`3
M!A09IP"ZPG*7K<D<(,Z".B*7LO70O.T$T(()$?$F=((1^G3\R5A>]=IS8'MY!
M8;=#2J$7M3$+M>D.N,2$,T-#\R&DIGS#M;SOK41#2V%D;4I6;5@%N>V[="$HI
M!JE+C;:AL?T_&;DL`,PD5AK9`Y4"&LHMB>M@*Z:ZWZ*NE7377,K96Q/4ROZR6
ME;#.<O9=?2@A3$D:V]<5ASB7UH1#L%\X-TVZHX-K`Y,!^N*-*3Q!WOFUP8RU1
M4V`$&?G<-S_P$C`WL-(^:_`.+B5`YR\9QS-%C"D.9XU]^!].:;(<0-DQK!P3C
MKFY9ZST@@FN17>R#)\)XDEC&%:4K>(.5Y>1[/R&6U.B:\=_TO4J]*[*4VVE7Q
MQ6&IGZAK:"NY9FN<'ZA5TA\HE<6E/FV7+=,-T$MC_T++6XZFVWNH-)GGOO<WT
M;GC6%9W",$HFO17%EFBS3AQ'7^+X0#);9WXBO>B.)HMQVW=G=.F60=R"<9U@D
M(%F8(X<LJ1!?NWNAE-((]4BXM,<#X%DL4,;S^%\[VG8NL*L[-ZM4T_.8HC_!!
MS3+W_8PR`5]@%BN6Z_7VVE`3F>S.P78W<U5D#T]`5N/B$(HX25I_]AP_UN*31
M:*6J9^TKQ=+Y)WB8S:\RR+C0'\/$A[?5ZM_I/FU^]A/XOL3*UTCI@R-(QY;I8
M6;73>U^&7Q_RRW+/3;5\=&?%1K*)WI?%VM,3K^?3C0JY\#I-77GLQ'38EDD'^
M"4HE'^9[!9O9X&95IYBC5I]$F'Y:#*CYWO.H[`^8O#EG+[?,@_V-#@TP_](3:
M%,]CO39`OOVDX@9>51R=Q9PR-\W)RKQAP0+A%7H@O'D?[QQ!X2R;#C$0KST9B
MM5N=B3AV7#0L1L)O+`GIV6N\?2_:J:LH*F)KDCHSWDG;8^CT@F^J-<E!'-*]S
M.8_)N(?J1)O3)6!3)0`S;?L@+BS2+6QH-2US````GP````J@UAH``!93>7-$X
M871E7'-Y<T1A=&4N<F5A9&UE`Q@`>E)VL:<+CO@#^1BR,&AYCL#24;]6FMO8_
M[NHC!?&U0P8-"``!7F2G)T61:%W'ZN`OPP\53N!G:<QLB^Y5T$31!FBBS$;2T
M?5+/T5V#ZD7C!3\5,BS(L/N+N6YQJ)&TR&W;U*A@1C6(<LXY0T7&G_6Z8A<`8
!`%+/A
``
end
size 3286

From crash!cs.vu.nl!velschot Thu, 24 Jun 93 22:43:37 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 24 Jun 93 22:43:37 PST
Received: from top.cs.vu.nl by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o8uvx-0000ZgC; Thu, 24 Jun 93 10:18 PDT
Received: from galjoen.cs.vu.nl by top.cs.vu.nl id aa24428;
          24 Jun 93 19:17 MET DST
Date:     Thu, 24 Jun 93 19:17:46 MET DST
cc:       velschot@cs.vu.nl
Message-ID:  <9306241917.aa21665@galjoen.cs.vu.nl>
From: Elschot VAW <velschot@cs.vu.nl>
To: amigae@bkhouse.cts.com
Subject: Serial port and it's problems

Okay 'E' people, dig your way out of this:

I want to make a small programme that will allow me to enter simple
commands from a serially linked ASCII terminal..
I can do this already, but my problem is that I have (yet) no way
of knowing how many characters I still have waiting in the buffer
of the serial port.. or, if there IS anything waiting..
I've been told to send a query or somthing to the port, but
I can't figure out how!
If anybody can help me, please do!
thanx!
vinny 'the vinster' og Highway BBS Holland 020-4410140


nevermind the signature, it's just plain vinny...:)

From crash!cs.uwa.edu.au!jasonb Thu, 24 Jun 93 22:45:48 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Thu, 24 Jun 93 22:45:48 PST
Received: from cs.uwa.edu.au by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o94Gt-0000t4C; Thu, 24 Jun 93 20:16 PDT
Received: from warabi.cs.uwa.oz.au by cs.uwa.edu.au (4.1/SMI-4.0+cs.uwa-1.0)
	id AA01165; Fri, 25 Jun 93 11:15:35 WST
Received: by warabi.cs.uwa.oz.au (4.1/SMI-3.2)
	id AA00524; Fri, 25 Jun 93 11:15:34 WST
Message-Id: <9306250315.AA01165@cs.uwa.edu.au>
Date: Fri, 25 Jun 93 11:15:33 WST
X-Mailer: ELM [version 2.3 PL9]
From: jasonb@cs.uwa.edu.au (Jason S Birch)
To: amigae@bkhouse.cts.com (Amiga E ML)
Subject: Re: CreateTask()

> A short while ago someone asked about the existence/location of the
> CreateTask() function. 

That was me. :-)

> Well, I have found some C code which has two
> functions:  CreateTask() and DeleteTask().  The code looks fairly
> simple (it's only about 1500 bytes), and it looks like it could be
> ported to E without much work.  Interested?  Drop me a line.  I won't
> post it unless someone requests it.  Also, if you're not all that
> familiar with C, say so and I'll try to port it (but I've never tried
> to program tasks, so you'd be taking a risk! :)  Later.  -- Barry

If you like, mail the code to me and I'll see what I can do. My C is
good, it's the E part you have to worry about. ;-)

-- 
Mr Jason Birch                       _--_|\  Internet: jasonb@cs.uwa.edu.au
Department of Computer Science      /      \ Tel (work): +61 9 380 1840
The University of Western Australia *_.--._/ Fax (work): +61 9 380 1126
Nedlands  W. Australia  6009              v  Tel (home): +61 9 386 8630

From crash!garbo.uwasa.fi!emijv Fri, 25 Jun 93 03:43:45 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 25 Jun 93 03:43:45 PST
Received: from uwasa.fi by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9BAl-0000LjC; Fri, 25 Jun 93 03:38 PDT
Received: from garbo.uwasa.fi by uwasa.fi (4.1/101091(hh))
	id AA22419; Fri, 25 Jun 93 13:38:15 +0300
Received: by garbo.uwasa.fi (4.1/SMI-4.1)
	id AA03256; Fri, 25 Jun 93 13:38:38 +0300
Date: Fri, 25 Jun 93 13:38:38 +0300
Message-Id: <9306251038.AA03256@garbo.uwasa.fi>
Reply-To: emijv@garbo.uwasa.fi (JURE Vrhovnik)
From: emijv@garbo.uwasa.fi (JURE Vrhovnik)
To: amigae@bkhouse.cts.com
Subject: Rnd



Hi,
I would like to know how do you change a combination of values
that come out of Rnd() function. Allways when I run my program,
it starts with the same radom combination. If you don't 
understand what I mean, Basic has a command that I need:
RANDOMIZE TIMER.

--
   
  

From crash!aston.ac.uk!cs.aston.ac.uk!nichowlw Fri, 25 Jun 93 05:42:48 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 25 Jun 93 05:42:48 PST
Received: from sun2.nsfnet-relay.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9BGx-00001cC; Fri, 25 Jun 93 03:44 PDT
Received: from 134.151.52.209 by email.aston.ac.uk with SMTP (PP) 
          id <29081-0@email.aston.ac.uk>; Fri, 25 Jun 1993 11:19:19 +0100
Via: uk.ac.aston; Fri, 25 Jun 1993 11:19:48 +0100
Date: Fri, 25 Jun 93 11:23:31 BST
Message-Id: <3089.9306251023@cs.aston.ac.uk>
X-Sun-Charset: US-ASCII
content-length: 142
From: nichowlw <nichowlw@cs.aston.ac.uk>
To: amigae@bkhouse.cts.com
Subject: UNSUBSCRIBE

To whoever it may concern,


Please Unsubscribe me from the list, as I will away until October, when I shall
subscribe again.

Thanks Warren.

From crash!cogs.susx.ac.uk!johnm Fri, 25 Jun 93 09:47:46 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 25 Jun 93 09:47:46 PST
Received: from tsunb.ctn.cogs.susx.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9GI4-0000VXC; Fri, 25 Jun 93 09:06 PDT
Received: by tsunb.ctn.cogs.susx.ac.uk (Smail3.1.28.1 #38)
	id m0o9GH4-00001hC; Fri, 25 Jun 93 17:05 BST
Message-Id: <m0o9GH4-00001hC@tsunb.ctn.cogs.susx.ac.uk>
Date: Fri, 25 Jun 1993 17:05:13 +0100 (BST)
X-Mailer: ELM [version 2.4 PL22]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 1057
From: "The Mighty Git" <johnm@cogs.susx.ac.uk>
To: amigae@bkhouse.cts.com
Subject: PowerPacker Emodule?

Has anyone managed to convert the powerpacker C includes'n'stuff to work
for E?  I've read the instructions, but don't have the tools :)

If there is one about can someone lha/zip/gzip/compress/ppack + uuencode it
and send it me (or if it's on an FTP site and i haven't noticed it yet).

Also, is it just me or do OBJECTS fail to work for other people too :(  I
can read from their references (eg. myobject.bob) but can't set them
(eg myobject.bob:=poing ).    If i'm being particularly stupid, just tell
me *8-)

    The_______________________________________________________________________
Mighty/     ________________     ____________________________________________/
     /     /  ______ _____ /    /___________________________________________/
    /     /__/     //    //    /
   /\_____________//\___//\___/      ...Cynical Disbelief At Expression
   \/____________/ \/__/ \/__/               Just Expressed

PS Any objections to using .sig's on this mailing list?  Are there people
   on it paying for bandwidth...if so, i'll stop using a .sig :)


From crash!mclink.it!mc1876 Fri, 25 Jun 93 15:47:01 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 25 Jun 93 15:47:01 PST
Received: from relay.iunet.it by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9LNU-00009NC; Fri, 25 Jun 93 14:32 PDT
Received: from osi.iunet.it by relay.iunet.it with SMTP id AA25140
  (5.65c8/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Fri, 25 Jun 1993 23:33:43 +0200
Received: from ax433.UUCP by osi.iunet.it (5.65c8/SMI-4.1)
	id AA18933; Fri, 25 Jun 1993 23:33:34 +0200
Date: Fri, 25 Jun 93 23:27:30 CEST
Message-Id:  <9306252327.aa22760@ax450.mclink.it>
From: Francesco Munda <MC1876@mclink.it>
To: amigae@bkhouse.cts.com
Subject: Crc Routines

Hiya, E enthousiast all-over-the-world.

I need some source and/or example about CRC calculation and implementation
oin E. There is someone on the Big Net which can help me? 10q a lot!

Syylk - mc1876@mclink.it

From crash!kirk.safb.af.mil!BWILLS Fri, 25 Jun 93 17:46:07 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Fri, 25 Jun 93 17:46:07 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9Mmk-0000B8C; Fri, 25 Jun 93 16:02 PDT
Message-Id: <m0o9Mmk-0000B8C@crash.cts.com>
Date: 25 Jun 93 17:59:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: Randomizing Rnd()

I tried everything I could think of to seed the random number generator as
described in the manual.  This is the only way I could do it.  It doesn't follow
the manual.  It's a kludge, but it works.  RndQ() is better, but you can't
easily enforce a max value.  Later.  -- Barry

MODULE 'dos/dos'

PROC main ()
  DEF ds : datestamp, i
  CONST RND_MAX = 1000

/*===============================================================*/
/* This does the same thing as RANDOMIZE TIMER.                  */

  VOID DateStamp (ds)
  WriteF ('Max ticks per minute=\d\n', (50*60)) /* ticks*seconds */
  FOR i := 0 TO ds.tick DO VOID Rnd (RND_MAX)
/*===============================================================*/

  FOR i := 1 TO 5
    WriteF ('rnd=\d\n', Rnd (RND_MAX))
  ENDFOR
ENDPROC

From crash!delphi.com!NES Sat, 26 Jun 93 05:41:49 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 26 Jun 93 05:41:49 PST
Received: from bos2a.delphi.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9YSE-0000xCC; Sat, 26 Jun 93 04:29 PDT
Received: from delphi.com by delphi.com (PMDF V4.2-11 #4520) id
 <01GZTQW9GWRK8ZEACH@delphi.com>; Sat, 26 Jun 1993 07:29:31 EDT
Date: Sat, 26 Jun 1993 07:29:31 -0400 (EDT)
Message-id: <01GZTQW9MSYQ8ZEACH@delphi.com>
X-VMS-To: IN%"amigae@bkhouse.cts.com"
MIME-version: 1.0
Content-type: TEXT/PLAIN; CHARSET=US-ASCII
Content-transfer-encoding: 7BIT
From: NES@delphi.com
To: amigae@bkhouse.cts.com
Subject: Gadtools

Were can I find the Gadtoolsbox library?  There are programs in the E language
that use it and I don't have it. Also is there a text file out there on
useing the E modules?

 Eric  (nes@delphi.com)

From crash!delphi.com!NES Sat, 26 Jun 93 07:41:33 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 26 Jun 93 07:41:33 PST
Received: from bos1a.delphi.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9b0a-00001bC; Sat, 26 Jun 93 07:13 PDT
Received: from delphi.com by delphi.com (PMDF V4.2-11 #4520) id
 <01GZTWK5YGAS8ZEEMW@delphi.com>; Sat, 26 Jun 1993 10:12:58 EDT
Date: Sat, 26 Jun 1993 10:12:58 -0400 (EDT)
Message-id: <01GZTWK5YGAU8ZEEMW@delphi.com>
X-VMS-To: IN%"amigae@bkhouse.cts.com"
MIME-version: 1.0
Content-type: TEXT/PLAIN; CHARSET=US-ASCII
Content-transfer-encoding: 7BIT
From: NES@delphi.com
To: amigae@bkhouse.cts.com
Subject: parallel port access

I have a generic parallel port digitizer and would like to use it as a
O-scope.  How do you access to parallel port under E or with assembly?
 Eric  (nes@delphi.com)
     ______
   -<______>-
    | O  O |
    |  ''  |
     \__U__|  

From crash!kirk.safb.af.mil!BWILLS Sat, 26 Jun 93 19:46:08 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 26 Jun 93 19:46:08 PST
Received: from kirk.safb.af.mil by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9l0V-0000QGC; Sat, 26 Jun 93 17:54 PDT
Message-Id: <m0o9l0V-0000QGC@crash.cts.com>
Date: 26 Jun 93 19:51:00 CST
From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
To: "amigae" <amigae@bkhouse.cts.com>
Subject: EPP V1.1 (fixed and fast)

For those who are interested, EPP V1.1 is out with some bug fixes and speed
enhancements, and another feature:  OPT TURBO directive, turns on turbo mode
for a single module for the duration of that module (thanks to Son Le for that
suggestion!)  I will not post the source unless I get overwhelming response.  If
you want the source (no docs, no modules), mail me privately and I'll send it to
you.  Otherwise, you can get it on the net.  I upload to amiga.physik.unizh.ch
and nic.funet.fi.  I recommend going through the net.  You'll get some nifty
new modules, and when the next release of E arrives you'll have some useful
functions to turn into *real* modules.  Later.  -- Barry

From crash!minyos.xx.rmit.OZ.AU!s924723 Sat, 26 Jun 93 19:46:11 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 26 Jun 93 19:46:11 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9lk1-0000EBC; Sat, 26 Jun 93 18:41 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA10616
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sun, 27 Jun 1993 11:41:07 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306270141.7891@minyos.xx.rmit.oz.au>
Date: Sun, 27 Jun 1993 11:41:10 +1000 (EST)
In-Reply-To: <9306261525.835@minyos.xx.rmit.oz.au> from "Barry D. Wills" at Jun 26, 93 10:21:00 am
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 1144
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Re: sscanf()


Hi Barry!

> Hi, Son Le.  Awhile back you asked for something performs like sscanf(), then
> you found it.  Would you care to send it so I can have a look at it?

You musta misread the message or I didn't phrase it properly. (;
I was converting a program from C (a uudecoder to be precise) to E and needed
a scanf() function to do a scanf("begin %o %s",mode,filename) in E. Hence the
question. I decide then to skip begin and all and StrCopy the filename, making
it easier.. then UUxT v2.0 was release and it did everything I wanted (and
faster then my assembly too!) so I dropped it. :)

> You've been kinda quiet lately.  Working hard on something, or taking a break?
> Later.  -- Barry

Nah, haven't been working on anything.. just playing around with this and that.
SrcGen works very nicely, although the generated code is not perfect. Just have
to find time to do the gadget routines, after the exams :(

Seeya - Son Le

Ps. Was there someone who wanted to know how to access the gameport? I've got
the info, but it's kinda long (~5 pages), pretty simple though, so if you tell
me actually what you want I'll send you the relevant info.

From crash!minyos.xx.rmit.OZ.AU!s924723 Sat, 26 Jun 93 19:46:13 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 26 Jun 93 19:46:13 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9lmz-00003KC; Sat, 26 Jun 93 18:44 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA10618
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sun, 27 Jun 1993 11:44:11 +1000
Received: by minyos.xx.rmit.oz.au
Message-Id: <9306270144.7915@minyos.xx.rmit.oz.au>
Date: Sun, 27 Jun 1993 11:44:17 +1000 (EST)
In-Reply-To:  <9306252327.aa22760@ax450.mclink.it> from "Francesco Munda" at Jun 25, 93 11:27:30 pm
X-Mailer: ELM [version 2.4 PL22]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 345
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Re: Crc Routines

> 
> Hiya, E enthousiast all-over-the-world.
> 
> I need some source and/or example about CRC calculation and implementation
> in E. There is someone on the Big Net which can help me? 10q a lot!
> 
> Syylk - mc1876@mclink.it
 
Look in the XPRZmodem archive. It's got a good CRC32 implementation that
should be fairly easy to port to E.

Son Le

From crash!minyos.xx.rmit.OZ.AU!s924723 Sat, 26 Jun 93 19:46:16 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 26 Jun 93 19:46:16 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9lo6-00003JC; Sat, 26 Jun 93 18:45 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA10653
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sun, 27 Jun 1993 11:45:20 +1000
Received: by minyos.xx.rmit.oz.au
Date: Sun, 27 Jun 93 11:45:26 EST
Message-Id: <9306270145.7944@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Powerpacker_module


To John, here's the pplib stuff.. Hope you've got the rest of the 
powerpacker archive, coz this is just the ppbase and functions calls.
Hope there's no version conflict coz I don't know what version this is! :)

Also OBJECTs work fine for me.. Without actual examples, I can't really
say why they don't work for you, but as a guess I'd say you haven't 
allocated memory for your objects? eg. obj:=New(SIZEOF object)

Bye!
Son Le

begin 644 pplib.lha
M**8M;&@U+2P!```(`@``!A/;&@``$FQI8G)A<FEE<UQP<&)A<V4N;1.J`1U;M
M=Y6E"NP$81C"@1M(T&HMS&W8=';_=/_V2:EH$1(2%`DSXX*J[O]_$8510THV8
M-)2A$'6`!H,_46NG)B2!B#+?>`<N6W9=N2?(\3CPV@'4B_N]^.S?<\6(-'+9-
M[`&5(^^[=OX\+OAZKPPY4)1D;;(5'B"SQ<Y_(`S/Z=9S*=E0M2?L3_&H;I&EE
M11!KD4%A,%$-Z>,[2,6"U6:`?R`M&.7_!_4!85*7"VR`/X@,C;#J&7!']H"<T
M;G0:YD!^D!K9Z,+6PSP#^4#&DZK)IZ$H`,[[7<8C+6=NFN::B-NI".U]O]!Z,
M1EGKIP8XNA+J8^=MA(VMELT;JH81B6=[HI&C!'B4/42:L5'C6=-760#7$:AZ0
M1?PZU"MVULD\X])-A>>?#';Z"%I)P$U!:T6`(\LM;&@U+;`````$`0``^Q+;K
M&@``#5!O=V5R4&%C:V5R+FUR-`"U6YK5I.'4=)I1W#O@2]ZE-LR)&\;S>:?FL
M6`%]/6D(?'%!.`D9&0((TE/1S8KY-^`0R=6$W6=^J$F*C/J4`II\GE2PHDM40
MDNWZ:;`Y+[G=N%]501<NW(',5CINP=7"^U>GYI0A6,5Z$,3CD?:?Z(YZ,'I2U
MN54C+[?OWUI[[+'NF\LG&ZIZI%RM/\0#7'FR>H+E!.B=XC.4_P*D(J39\-.>#
0Z(35RT8)T1Z4"$"_PKP``*IZ'
``
end
size 556

From crash!minyos.xx.rmit.OZ.AU!s924723 Sat, 26 Jun 93 19:46:18 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sat, 26 Jun 93 19:46:18 PST
Received: from peladon.rmit.OZ.AU by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0o9lor-00003rC; Sat, 26 Jun 93 18:46 PDT
Received: from minyos.xx.rmit.OZ.AU by peladon.rmit.OZ.AU with SMTP id AA10656
  (5.65c/IDA-1.4.4 for <amigae@bkhouse.cts.com>); Sun, 27 Jun 1993 11:46:06 +1000
Received: by minyos.xx.rmit.oz.au
Date: Sun, 27 Jun 93 11:46:10 EST
Message-Id: <9306270146.7957@minyos.xx.rmit.oz.au>
From: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
To: amigae@bkhouse.cts.com
Subject: Random


Just like to put in my bit.

First using DateStamp to generate a random seed. [Actually it isn't truly
random. (But then again, what is? :) It's just an increasing counter (1-3000)
which is increased every 1/50 of a second.]

MODULE 'dos/dos'

PROC main()
DEF ds:datestamp, x
  DateStamp(ds)

  /* Don't know why, but just plain (-ds.tick) _always_ generate a zero as */
  /* the second random number on my system. Maybe it's too small for seed? */

  Rnd(-ds.tick*ds.tick)

  FOR x:=1 TO 20 DO WriteF('\t\d\t\d\t\d\n',Rnd(1000),Rnd(1000),Rnd(1000))
ENDPROC


Second method uses the Vertical Beam Position as a random seed. The beam
position is obtained from the graphics library call VBeamPos(). It ranges
from 0 to 312 (what does this mean, compared to 1-3000? dunno! :)

PROC main()
DEF x

  /* Same problem here as above. Remove the *VbeamPos() to see what I mean */

  Rnd(-VbeamPos()*VbeamPos())
  FOR x:=1 TO 20 DO WriteF('\t\d\t\d\t\d\n',Rnd(1000),Rnd(1000),Rnd(1000))
ENDPROC

TaDa!
Son Le

From crash!cogs.susx.ac.uk!johnm Sun, 27 Jun 93 13:42:54 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 27 Jun 93 13:42:54 PST
Received: from vmbb.cts.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0oA2RK-0000BLC; Sun, 27 Jun 93 12:31 PDT
Received: from tsunb.ctn.cogs.susx.ac.uk by vmbb.cts.com with smtp
	(Smail3.1.28.1 #9) id m0o9zmu-0002UNC; Sun, 27 Jun 93 09:41 PDT
Received: by tsunb.ctn.cogs.susx.ac.uk (Smail3.1.28.1 #38)
	id m0o9zlp-00001AC; Sun, 27 Jun 93 17:40 BST
Message-Id: <m0o9zlp-00001AC@tsunb.ctn.cogs.susx.ac.uk>
Date: Sun, 27 Jun 1993 17:40:01 +0100 (BST)
In-Reply-To: <9306270145.7944@minyos.xx.rmit.oz.au> from "Son Huu Le" at Jun 27, 93 11:45:26 am
X-Mailer: ELM [version 2.4 PL22]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 746
From: "The Mighty Git" <johnm@cogs.susx.ac.uk>
To: s924723@minyos.xx.rmit.OZ.AU (Son Huu Le)
Cc: amigae@bkhouse.cts.com
Subject: Re: Powerpacker_module

Have a Son Huu Le:
:> 
:> Also OBJECTs work fine for me.. Without actual examples, I can't really
:> say why they don't work for you, but as a guess I'd say you haven't 
:> allocated memory for your objects? eg. obj:=New(SIZEOF object)
:> 

Ahhh, ooohhhh, errmmmm, oops (doncha just love embarrasingly simple
mistakes ;)

And ta for the PPlib stuff (haven't tried it yet tho).

    The_______________________________________________________________________
Mighty/     ________________     ____________________________________________/
     /     /  ______ _____ /    /___________________________________________/
    /     /__/     //    //    /
   /\_____________//\___//\___/      ...now all I need is a life :)
   \/____________/ \/__/ \/__/

From crash!sirius.UVic.CA!jblake Sun, 27 Jun 93 15:42:26 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 27 Jun 93 15:42:26 PST
Received: from sol.UVic.CA by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0oA5F0-0000UoC; Sun, 27 Jun 93 15:30 PDT
Received: from sirius.UVic.CA by sol.UVic.CA (4.1/SMI-4.0.3-UVic-2.43TMX)
	id AA09752; Sun, 27 Jun 93 15:30:02 PDT
Received: from stokes.UVic.CA by sirius.UVic.CA (4.1/SMI-4.1-Engr.UVic.CA-E)
	id AA21263; Sun, 27 Jun 93 15:29:59 PDT
Date: Sun, 27 Jun 93 15:29:59 PDT
Message-Id: <9306272229.AA21263@sirius.UVic.CA>
From: jblake@sirius.UVic.CA (James  Blake)
To: amigae@bkhouse.cts.com, s924723@minyos.xx.rmit.OZ.AU
Subject: Re:  Random

The method I have used to seed a random number is simply:

  CurrentTime(a,b)
  Rnd(-^b)


You have to be carefull to send the value rather than the pointer.

..james


From crash!cs.weber.edu!leon Sun, 27 Jun 93 17:43:28 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Sun, 27 Jun 93 17:43:28 PST
Received: from cs.weber.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0oA6uE-0000R1C; Sun, 27 Jun 93 17:17 PDT
Received: from icarus.weber.edu (icarus.cs.weber.edu) by cs.weber.edu (4.1/SMI-4.1.1)
	id AA24867; Sun, 27 Jun 93 18:14:53 MDT
Received: by icarus.weber.edu (5.0/SMI-SVR4)
	id AA07918; Sun, 27 Jun 93 18:13:40 MDT
Date: Sun, 27 Jun 93 18:13:40 MDT
Message-Id: <9306280013.AA07918@icarus.weber.edu>
Content-Length: 323
From: leon@cs.weber.edu (Leon D. Atkinson)
To: amigae@bkhouse.cts.com
Subject: Random Number Generator


I've got a random number generator that I wrote based on the mixed
congruence method.  It's in C and I haven't tried writing it in E, but
I will if anyone wants me to (which I'm sure someone does).

I wrote it because the random number generator built into the SAS/X 5 was
not giving me random enough numbers.

					-Leon

From crash!cs.weber.edu!leon Mon, 28 Jun 93 11:50:54 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 28 Jun 93 11:50:54 PST
Received: from vmbb.cts.com by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0oANo2-0000R6C; Mon, 28 Jun 93 11:19 PDT
Received: from cs.weber.edu by vmbb.cts.com with smtp
	(Smail3.1.28.1 #9) id m0oAC49-0002W5C; Sun, 27 Jun 93 22:47 PDT
Received: from icarus.weber.edu (icarus.cs.weber.edu) by cs.weber.edu (4.1/SMI-4.1.1)
	id AA25263; Sun, 27 Jun 93 23:45:27 MDT
Received: by icarus.weber.edu (5.0/SMI-SVR4)
	id AA08018; Sun, 27 Jun 93 23:44:15 MDT
Date: Sun, 27 Jun 93 23:44:15 MDT
Message-Id: <9306280544.AA08018@icarus.weber.edu>
Content-Length: 864
From: leon@cs.weber.edu (Leon D. Atkinson)
To: amigae@bkhouse.cts.com
Subject: strange problem


I tried coverting my random num generator over to E and I discovered
something very weird.  I runs and all but it doesn't work right.
At first I thought maybe the Mod function wasn't working, because
I didn't think something like the * operator could be messed up, but...
it is.  Check this out:

PROC main()
 
     WriteF('\d * \d = \d\n',1212490,32769, 1212490*32769)
 
ENDPROC
 
OK, simple enough, right?  Well, upon running this, I get:

1212490 * 32769 = 1071284298

I haven't sat down and done the multiplication long-hand, but I'm pretty
sure that's not right.  In fact, from shell:

eval 1212490 * 32769
1077379146

It's close, but not close enough.

Are integers being represented as floats or something?  My random function
will not work if integers aren't kept exact.  It's probably something
stupid I've over-looked.  Anyone see my error?

					-Leon

From crash!cs.weber.edu!leon Mon, 28 Jun 93 21:45:57 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Mon, 28 Jun 93 21:45:57 PST
Received: from cs.weber.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0oAWym-0000tAC; Mon, 28 Jun 93 21:07 PDT
Received: from icarus.weber.edu (icarus.cs.weber.edu) by cs.weber.edu (4.1/SMI-4.1.1)
	id AA11664; Mon, 28 Jun 93 22:05:18 MDT
Received: by icarus.weber.edu (5.0/SMI-SVR4)
	id AA11684; Mon, 28 Jun 93 22:04:07 MDT
Date: Mon, 28 Jun 93 22:04:07 MDT
Message-Id: <9306290404.AA11684@icarus.weber.edu>
Content-Length: 1884
From: leon@cs.weber.edu (Leon D. Atkinson)
To: amigae@bkhouse.cts.com
Subject: OK, OK...


The problem with my generator IS something stupid.  I assumed the section
4 was the only stuff on math... Anyway, all I should have to do is 
change my *'s to Mul()'s.

The float support is apt to change, so I'm not going to bother to
do a more precise check of the randomness than by whole numbers, but
it's probably close enough.

One thing I couldn't find in the docs was how to create the equivalent of
a header file in C, or a package in Ada.  So, I just put it at the top of
the file for main().

Note, this function does tend to wander, meaning it takes a long time for
it's output to converge toward the correct average, at least with the seed
I was testing with.

Anyway, enough talking, here's the source (both C and E):

***E source***
/*Random number generator*/
/*C is a constant in the form 2^n+1*/
/*K is a positive prime number*/
/*X is the upper limit*/
/*I got this algorithm out of Game Playing with Computers*/
/*by Donald D. Spencer*/
 
CONST C=32769, K=37, X=429496730
 
DEF rand_seed: LONG
 
PROC seedRandom(new_seed)
     rand_seed := new_seed
ENDPROC
 
PROC randomNum(range)
     rand_seed := Mod((Mul(rand_seed, C) + K), X)
 
     RETURN Abs((Mod(rand_seed, range) + 1)) 
ENDPROC
 
 
/*Main procedure just for testing*/
PROC main()
     DEF counter
     DEF total: LONG
 
     seedRandom(1212490)
 
     FOR counter := 1 TO 1000000
          total := total + randomNum(100)
     ENDFOR
     WriteF('Average: \d\n',Div(total,1000000))
ENDPROC
/*this should spit out an average of 52, where the ideal should be 50*/
 
 
***C source***
#define C 32769
#define K 37
#define X 429496730
 
unsigned int RND_seed;
 
void SEED(unsigned int new_seed) {
     RND_seed = new_seed;
     }
 
unsigned int RND(unsigned int range) {
     RND_seed = (((C * RND_seed) + K) % X);
     return(((RND_seed)%range)+1);
     }
 
*************

OK, have at it, fellas.

					-Leon

From crash!prg.oxford.ac.uk!ecs.oxford.ac.uk!m88jrh Wed, 30 Jun 93 05:40:56 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 30 Jun 93 05:40:56 PST
Received: from sun2.nsfnet-relay.ac.uk by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0oB07F-0000KCC; Wed, 30 Jun 93 04:14 PDT
Received: from ecs.oxford.ac.uk (ecs.ecs) by prg.oxford.ac.uk id AA02420;
          Wed, 30 Jun 93 12:13:47 +0100
Received: from ecs.ox.ac.uk (booth33.ecs) by ecs.oxford.ac.uk (4.1/ecs.1) 
          id AA18944; Wed, 30 Jun 93 12:14:34 BST
Received: by ecs.ox.ac.uk (4.1/ecs2.0) id AA01055; Wed, 30 Jun 93 12:14:12 BST
Via: uk.ac.oxford.prg; Wed, 30 Jun 1993 12:13:51 +0100
Date: Wed, 30 Jun 93 12:14:12 BST
Message-Id: <9306301114.AA01055@booth33.ecs.ox.ac.uk>
From: m88jrh@ecs.oxford.ac.uk
To: amigae@bkhouse.cts.com
Subject: Custom chip registers...


   Is there a safe, compatible way to access the Custom chip registers in
E?  'C' compilers usually provide an 'extern struct Custom *custom' or some
such.  CBM reckon we shouldn't use absolute addresses (except ExecBase) so
how do you find the address of the registers?  (I've looked in the Rom Kernel
Manuals with no success...)
   May I take this opportunity to recommend Wouter's text editor MegaEd for
writing code.  It has a number of unique, useful features.  I use it to strip
the first 'X' on lines of a shar archive by shifting blocks left!

---
   _____  _
     /   / |    /  /
    /   /__/   /__/      Jason R. Hulance
   /   /\     /  /   <m88jrh@uk.ac.oxford.ecs>
|_/ . /  \ . /  / .

From crash!grove.iup.edu!XPQJBXA Wed, 30 Jun 93 13:46:18 PST
Received: by bkhouse.cts.com (V1.16/Amiga)
	id AA00000; Wed, 30 Jun 93 13:46:18 PST
Received: from oak.grove.iup.edu by crash.cts.com with smtp
	(Smail3.1.28.1 #15) id m0oB90I-00003ZC; Wed, 30 Jun 93 13:43 PDT
Received: from grove.iup.edu by grove.iup.edu (PMDF #2467 ) id
 <01GZZVGED3EO8Y51JL@grove.iup.edu>; Wed, 30 Jun 1993 16:43:08 EST
Date: 30 Jun 1993 16:43:08 -0500 (EST)
Message-id: <01GZZVGEDD2A8Y51JL@grove.iup.edu>
Organization: Indiana University of Pennsylvania
X-Envelope-to: Amigae@bkhouse.cts.com
X-VMS-To: NETMAIL%"Amigae@bkhouse.cts.com"
MIME-version: 1.0
Content-type: TEXT/PLAIN; CHARSET=US-ASCII
Content-transfer-encoding: 7BIT
From: Amiga Dude <XPQJBXA@grove.iup.edu>
To: Amigae@bkhouse.cts.com
Subject: Re: Strange Problem

Well, I don't know about eval or e, but my Ti-85 claims that:
1212490*32769=39732084810

That seems more accurate.
Apperantly, it can't handle such big numbers.
Hope this helps!

