[ont.micro.mac] MacForth, some comments.

info-mac@utcsrgv.UUCP (info-mac) (04/28/84)

Date: Fri 27 Apr 84 16:17:08-EST
From: uw-beaver!INTMET@BBNA.ARPA
Subject: MacForth, some comments.
To: info-mac@SUMEX-AIM.ARPA

Well I've had MacForth for about a week now.  I have sent the folks at
Creative solutions two four page letters in nine point type single spaced
full of typos and bugs.  MacForth is a lot of fun, mostly because the
MacIntosh is a lot of fun, but like any obscure notation one grows to like
it, your mind gets prideful of its new found skill.
  The documentation, of which there is a lot, is acceptable.  There are lots
of minor errors, a lot of "words" are undefined.  "Word" is the forth term
for a subprogram.
  Graphics are draw to windows.  There are three coordinate systems for
treating a window; the Quickdraw native coordinates, a MacForth
coordinate system that includes scaling, rotation, y axis positive is up,
and a MacForth coordinate system like the other that doesn't include rotation.
It is difficult to infer which coordinate system which Words
reffer to, experimentation will help with this.  It isn't clear that a
complete set of words is provided in any one of the coordinate systems.
  Window support is excellent.  You can create windows of various types,
though type isn't documented, of any shape, with scroll controls and size
box.  Best of all you may attach a Word to a window to be given control when
the user clicks in that window.  The Word will be terminated and control
passed to another window if the user clicks in another window.
  A window manager routine is usually a loop that plucks events off of an event
queue and then responds to them.  For example it might react to mouse down
by tracking the mouse.
  The flow of control for events is not clearly documented so it isn't clear
who gets control when an exception is thrown, or what context a window
manager executes in, or how a window manager is shut down when a new window
becomes active.
  The level one release has a lot of stuff in it that is undocumented, and some
of it is explicitly documented as not supported.  Thus the mechinisms for using
scroll bars isn't supported, nor is the tool box material for text handling.
  MacForth is fast, it can draw about 200 vectors in a second.
  There is a lot of stuff I presume is in the tool box that is not provided,
forexample the stuff to drag an overlay, or do a push button, or track a 
control all is not supported and as far as I can tell isn't there.
  MacForth is a hackers device, and as such it is a lot of fun.  It is a great
way to learn about the machine's edges.  It is probably a much better way to
spend your money than to bye MS-Basic.  It is probably much more powerful,
bigger programs, faster programs, etc. than MacBasic, MacPascal.  You
don't have to wait, assuming that Creative Solutions doesn't get so embarsed by 
the implementation and documentation to pull it.  If you buy one you will be
very irritated at the numerous bugs and typos, you will have to keep 
reminding yourself that atlest your getting to program you Mac.
  Forth has a long tradition of being a public domain language.  The company
that advertises in Byte, Mountain View Press, tells me that they will
have a public domain verion in a few months ( narc narc ).  If you want to
see what a Forth system looks like you can snarf these files from
the public domain directories at SIMTEL20:
     MICRO:<CPM.FORTH-83>EXTEND80.BLK
                         META80.BLK
                         UTILITY.BLK
Do not do this unless you are prepared to deal with a file that contains
no carrage returns, or linefeeds.  The file must be broken into 64 character
lines.  These are the complete sources for an implementation of the Forth
dialect Forth-83, for the z80.  That same directory includes an implementation
for the 8086.
  Creative Solutions does not consider what they have done to be in
the public domain at all.
  I'm happy with my MacForth, I'm glad I bought it, at least I'm
playing with my Mac.
                                                Ben Hyde, Cambridge
-------