[comp.lang.forth] NEON

UWC6NTG@UICVMC.BITNET (Nicholas Geovanis 312-996-0590) (07/27/89)

   Bob Loewenstein mentioned NEON, which I read an article on a few years back,
but filed and forgot about. Can anyone point me to a comprehensive source
describing syntax and philosophy? How about commercial and PD interpreters?
                          Much Obliged,
                            Nick Geovanis - UWC6NTG at UICVMC.EDU
                            SysProg - Univ. of Ill. Admin. Comp. Ctr.
                            Chicago

rfl@oddjob.uchicago.edu (Bob Loewenstein) (07/28/89)

Kriya is no longer supporting Neon, as far as I know.  But we at
U of C are, having been involved with Chuck Duff and its development.
Kriya updated Neon up to version 2.0 which supported HFS, floating
point, and assembly; in addition, most of the bugs were fixed.

Since then we have created interfaces to color quickdraw and have 
developed image processing software on a Mac II.  The original
2.0 works on a MacII and SE030, and under multifinder; I think
this is testimony to Chuck and the others that created this
environment when 512 macs were just becoming widespread (prior
to Mac+'s).

Even though Kriya no longer supports it, it is easy to massage
it to keep current on newer macs and ROMS. It's simple to write
interfaces to new calls in the toolkit of the Mac. I look at Neon
as a great enhancement to Forth.  Forths have a tradition of
being supported by its users, and Neon is not unique in this.


kevinbe@microsoft.UUCP (Kevin Berg) writes:
> It might also be interesting for you to share some of the OO implementations
> that you find useful, or cumbersome, via example. I'm sure many others
> would be interested.

One example is color image support on a Mac II. If anyone has tried this
after reading the sections in IM V5, you know what I mean. A lot
of things need to be done for each image and window that is created.
By making an image class and a colorWindow class, with the appropriate
pixmaps and colortables as instance variables created when needed,
the whole operations becomes quite easy. Multiple images are just
multiple instances of the same class, which can be targeted to any
colorWindow object. I don't have to write specialized code for each
image, nor do I have to worry about creating the windowPalette, the
colorTable, etc. each time I create another image. In fact, it works
so nicely, I really have forgotton how things work since it's now part
of my system.

I don't have to handle button hits, menu hits, event queues...they are all
handled by the Neon system. It's relatively simply to affect global
changes deep in the system by small inheritances later on. 

Nicholas Geovanis writes:
> but filed and forgot about. Can anyone point me to a comprehensive source
> describing syntax and philosophy? How about commercial and PD interpreters?

Kurt Schmucker's book on object oriented languages and the Mac had
a section on Neon. It was prior to version 2.0. As I remember, he rated
it the fastest of all the implementations. This is partly due to the
fact that early binding is the default, with an option to late bind if
one wants.

We have thought of porting Neon to other machines. It doesn't seem
to be that difficult, just requiring some time to do the work.
Most of the code is at high level.

If anyone is interested, they could write me directly, or call.

Bob Loewenstein
Dept. of Astronomy and Astrophysics
University of Chicago
Williams Bay, Wi  53191

414-245-5555

heins@hpdml93.HP.COM (Doug Heins) (08/01/89)

/ hpdml93:comp.lang.forth / rfl@oddjob.uchicago.edu (Bob Loewenstein) /  9:32 am  Jul 28, 1989 /

Kriya is no longer supporting Neon, as far as I know.  But we at
U of C are, having been involved with Chuck Duff and its development.
Kriya updated Neon up to version 2.0 which supported HFS, floating
point, and assembly; in addition, most of the bugs were fixed.

Since then we have created interfaces to color quickdraw and have 
developed image processing software on a Mac II.  The original
2.0 works on a MacII and SE030, and under multifinder; I think
this is testimony to Chuck and the others that created this
environment when 512 macs were just becoming widespread (prior
to Mac+'s).

Even though Kriya no longer supports it, it is easy to massage
it to keep current on newer macs and ROMS. It's simple to write
interfaces to new calls in the toolkit of the Mac. I look at Neon
as a great enhancement to Forth.  Forths have a tradition of
being supported by its users, and Neon is not unique in this.


kevinbe@microsoft.UUCP (Kevin Berg) writes:
> It might also be interesting for you to share some of the OO implementations
> that you find useful, or cumbersome, via example. I'm sure many others
> would be interested.

One example is color image support on a Mac II. If anyone has tried this
after reading the sections in IM V5, you know what I mean. A lot
of things need to be done for each image and window that is created.
By making an image class and a colorWindow class, with the appropriate
pixmaps and colortables as instance variables created when needed,
the whole operations becomes quite easy. Multiple images are just
multiple instances of the same class, which can be targeted to any
colorWindow object. I don't have to write specialized code for each
image, nor do I have to worry about creating the windowPalette, the
colorTable, etc. each time I create another image. In fact, it works
so nicely, I really have forgotton how things work since it's now part
of my system.

I don't have to handle button hits, menu hits, event queues...they are all
handled by the Neon system. It's relatively simply to affect global
changes deep in the system by small inheritances later on. 

Nicholas Geovanis writes:
> but filed and forgot about. Can anyone point me to a comprehensive source
> describing syntax and philosophy? How about commercial and PD interpreters?

Kurt Schmucker's book on object oriented languages and the Mac had
a section on Neon. It was prior to version 2.0. As I remember, he rated
it the fastest of all the implementations. This is partly due to the
fact that early binding is the default, with an option to late bind if
one wants.

We have thought of porting Neon to other machines. It doesn't seem
to be that difficult, just requiring some time to do the work.
Most of the code is at high level.

If anyone is interested, they could write me directly, or call.

Bob Loewenstein
Dept. of Astronomy and Astrophysics
University of Chicago
Williams Bay, Wi  53191

414-245-5555
----------

rfl@oddjob.uchicago.edu (Bob Loewenstein) (10/08/90)

I have been negotiating with Kriya (which is located in the DC area) about
getting NEON into the public domain. As of last week, they agreed to send me a
letter allowing the NEON sources to be shared. However, the stipulation was that
all references to the word 'NEON' be left out, since there is some legal problem
about the use of that name. I have not received the letter yet, but when I do, I
will arrange to release the sources as has been maintained to the present..

The current version of NEON that we use is up to 3.2, maintained by a few of us
at University of Chicago. Because it runs on a macintosh, and we have not ported
it to another machine (although that wouldn't be too difficult), major
differences from Kriya's last released version 2.0 are: multifinder compatible,
support for color quickdraw, works on all macs from mac+ to iici (not tested on
an fx). While it supports all toolbox calls, not all the interfaces have been
written. The sources I'll release include memory, event, window, control,
strings, serial i/o, utilities, device, floating point, and many other manager
interfaces. We also have TeEdit, Color Quickdraw, MacTCP, and other interfaces
as well, but these would be available separately, since they were developed for
applications, and not as generic interfaces. While bugs may exist, I am aware of
none in the 3.2 system.

In a related note, MOPS, Michael Hore's version of NEON will also be available
in the public domain. He took the nucleus and rewrote it as threaded subroutine
calls. He also changed all memory management to use relocatables for less heap
fragmentation. It runs faster that NEON, but doesn't yet support floating point.
Many neon sources will compile into MOPS, but not all. He also has a simple
implementation of multiple inheritence. Since we have a large number of NEON
applications to support, we will probably continue to use NEON rather than MOPS.
On most macII type machines, NEON runs fast, so that speed is not an issue.
Number crunching is best done in other languages, better designed for algebraic
formulation.

I'll post another note when I receive the letter from Kriya, but this negotiation
has been going on for almost a year. I talked to Chuck Duff a few months
ago, and he has helped by writing a letter to Kriya to encourage them to
release NEON into the public domain.

Anyone interested can contact me at

Bob Loewenstein
Dept. of Astronomy and Astrophysics
The University of Chicago
Yerkes Observatory
Williams Bay, Wi  53191

rfl@oddjob.uchicago.edu
414-245-5555

loeffler@phoenix.aca.mcc.com (David D. Loeffler) (11/14/90)

Sorry to bring this up again but I missed about a month or two of
forth news.  

What is the current status of Neon?  I got this for my Mac may moons
ago and have heard talk that it may be put into the public domain.  Is
this true?  If not, is there any group that is going to take over
support?

loeffler@phoenix.aca.mcc.com (David D. Loeffler) (11/14/90)

Sorry to bring this up again but I missed about a month or two of
forth news.  

What is the current status of Neon?  I got this for my Mac many moons
ago and have heard talk that it may be put into the public domain.  Is
this true?  If not, is there any group that is going to take over
support?

rfl@oddjob.uchicago.edu (Bob Loewenstein) (11/14/90)

I'm still trying to squeeze the letter from Kriya (Neon's owner)
that will give me the authority to release it to the public
domain. I've had verbal assurances that this will happen, but
it takes these guys a while to put anything into writing. As soon
as I get something in writing, I'll post a note to this news group
telling where Neon for the Mac will be available.

Again, for those that don't know, Neon is an object oriented language
based on forth. We have maintained it at UofC and it runs under
all systems >4.2 and on all macs >512k. It was a product several
years ago, but is no longer. 

rfl@oddjob.uchicago.edu (Bob Loewenstein) (01/18/91)

After a long negotiation period with Kriya Systems, I have received written
permission to release Neon into the public domain. The letter from Kriya
reads:

"Kriya Systems, Inc. gives you [me] the permission to freely distribute for
scientific and educational purposes the programming language formerly known
as Neon, including the distribution of the source which has been released
to you.  You do not have the right to use the name Neon, as it apparently
had prior use by another company and is not a valid trademark of Kriya
Systems.  All commercial distribution rights are reserved by Kriya Systems,
Inc."

Since a few of us at the University of Chicago have modified the language
somewhat, and to comply with Kriya's wishes, we have renamed the language
Yerk, which is at least not an acronym for anything, but rather stands for
Yerkes Observatory, part of the Department of Astronomy and Astrophysics at
U of C.

For those who don't know about Neon, it was an object oriented, macintosh
targeted language based on a Forth Kernel with some major modifications.
It was developed and sold as a product by Kriya Systems from 1985 to 1988.
Because it is an extensible language, it was possible for us to keep it
compatible with new toolkit calls, new mac managers, etc.  We have modified
the nucleus to make improvements, but it is still an evolving language.  We
are releasing it at this time because it is a very useable and powerful
language/environment for the mac.

We have written many data acquisition and display programs with Yerk, as
well as graphical interfaces for instrument control (both telescopes and
instruments). While not part of this release, we have written interfaces
for color quickdraw for image processing programs, and a MacTCP interface
for network interface. These and other interfaces will probably be made
available on request, with the understanding that they were written for
specific applications and not as general support interfaces.

Some features of the language are:

	- defaulted early binding, with ability to late bind in almost any
		circumstance
	- inheritance (not multiple)
	- floating point (SANE)
	- many system classes and objects for mac interfacing:
		windows, controls, events, files, arrays, ordered-columns, menus,
		hierarchical and popup menus, handles, strings, mouse, quickdraw,
		modal dialogs, offscreen bitmaps, vbl, time manager, etc.
	- module (overlay) creation that are loaded only when necessary and
		may be purged from application heap memory.

Some forth extensions are:

	- local input parameters
	- named input variables
	- multiple cfa words (including vectors and values)
	- CASE
	- SELECT
	- 68000 assembler

We have used the language on the following macs:
mac+,se,se30,macII,IIci,IIx,IIcx. There is no reason to believe that it
won't work on any mac+ or beyond. Any system >= 6.0 is recommended.

The complete source files, an executable Yerk environment, and update
manual (MS Word 4.0 format) are available with anonymous ftp at
oddjob.uchicago.edu in ~ftp/pub/Yerk directory. They are compressed with
Stuffit and then binhexed. Please try to download these files in the
evening hours.  In the near future, these files may be added to the
MacTutor source code disk.

If anyone has any questions, feel free to contact me:

Bob Loewenstein
Yerkes Observatory
Williams Bay, Wi  53191
414-245-5555
rfl@oddjob.uchicago.edu