[fa.info-mac] INFO-MAC Digest V2 #8

info-mac@uw-beaver (03/01/85)

From: Moderator John Mark Agosta <INFO-MAC-REQUEST@SUMEX-AIM.ARPA>


INFO-MAC Digest         Thursday, 28 Feb 1985       Volume 2 : Issue 8

Today's Topics:
                    New Programs: Simutree & Simunet
                          XLISP and HyperDrive
                        Re: C Compiler Benchmarks
               Resource Editor Documentation (another bug)
                    How to put Megamax on your disks
                            MacModula-2 tips
                    First Impressions of Odesta Helix
                          Weak shoulder straps
                            Mail order query


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

Date: Tue, 26 Feb 85 17:10:48 EST
From: winkler@harvard.ARPA (Dan Winkler)

Here are two animated Macintosh programs I've written, MacTree and 
MacNet.  (I'm open for better names.)

[ How about SIMUTREE.HCX and SIMUNET.HCX ? That is how they are
  stored here on <INFO-MAC> -jma ]

MacTree is an animated tree program which is similar to handson except
that it also does AVL trees and self-adjusting trees, not just binary 
trees.  Just type characters to insert nodes.  If you change tree
types without first clearing the nodes in the current tree, it
reinserts the same input sequence into the new tree type.  There is an
undo feature that lets you watch the same insertion several times.
There is an insert random feature that lets you build random trees (it
uses the Random() function in QuickDraw).  You can adjust the speed of
the animation by choosing whether the program should pause, stop, or
continue full speed ahead after each message it prints.  If you choose
stop, the program will wait for a keydown or mousedown before
proceeding.  It counts steps needed for each insertion to give you
some idea of the relative efficiency of each tree type.

MacNet is an animation of Valiant's randomized packet switching 
algorithm which shows packets moving between queues in nodes
positioned at the vertices of a hypercube.  The point of the animation
is that there are permutations which cause very bad traffic jams when
all packets move along the shortest path to their destinations but
that if you send each packet first to a random destination and then
along the shortest path to its real destination, you avoid the traffic
jams.  This program takes a few seconds to start up; be patient.

These programs were inspired by Brown's BALSA system.  MacNet has
never been used for anything except amusing Valiant and me.  MacTree
is being used this semester at Harvard in Computer Science 124, a
course on data structures and algorithms.  Both programs are stable
but far from finished.  MacTree needs 2-3, B, and B* trees, a better
redrawing algorithm, scrolling, and node labels longer than a single
character.  I know how to do all those enhancements but am quite busy
right now and my recent rejection from Harvard Computer Science
graduate school has killed my former enthusiasm for pouring hundreds
of hours into Harvard projects.

If you want source, you can have it.  It's written in Manx C.

Dan. (winkler@harvard)

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

Date: Thu, 28 Feb 85 10:23:20 EST
From: winkler@harvard.ARPA (Dan Winkler)
Subject: XLISP and HyperDrive


From stew@lhasa.UUCP Thu Feb 28 00:18:57 1985 Received: by
harvard.ARPA; Thu, 28 Feb 85 00:18:53 EST From: stew@lhasa.UUCP Date:
28 Feb 85 00:19 EST To: winkler@harvard, betz@harvard Subject:  Xlisp
on HyperMac Status: R

XLisp doesn't seem to work on my HyperMac when the HyperDrive is
online.  It works when I boot off a diskette and load XLisp off a
diskette, though.  Any idea why this might be?  It starts up and
whites the screen, but instead of the version number message, it puts
a couple of characters half on the top of the screen and then hangs.

If you want to come over to the chem dept. and see for yourself, give
me a call.

Stew 5-4707

- ------------
From winkler Thu Feb 28 00:50:35 1985 Received: by harvard.ARPA; Thu,
28 Feb 85 00:50:31 EST From: winkler (Dan Winkler) To: betz@harvard,
lhasa!stew, winkler@harvard Subject: Re:  Xlisp on HyperMac Status: R

My only guess is that there's some interaction between the Manx 
console driver and the hyperdriver drivers.  But I have run Manx on a
hypermac with no problem.  Try using the resource editor to copy the 
Manx console driver (which I put in the resource fork of xlisp) into 
the Hyperdrive system file and remove it from the xlisp resource fork.

Dan.

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

From stew@lhasa.UUCP Thu Feb 28 03:19:11 1985 Received: by
harvard.ARPA; Thu, 28 Feb 85 03:19:07 EST From: stew@lhasa.UUCP Date:
28 Feb 85 03:14 EST To: winkler@harvard Subject:  RE: Re:  Xlisp on
HyperMac Status: R

Yeah, .Con in the XLisp file and .HDdrvr in the system file both have
ID = 30.  Renumbering .Con to be 9 solved my problem.  This is a loss
-- the "namespace" for drivers is pretty damn limited.

Stew

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

Date: Wed, 27 Feb 85 18:21:49 pst
From: hamachi%ucbkim@Berkeley (Gordon Hamachi)
Subject: Re: C Compiler Benchmarks

Additional information concerning my C compiler evaluation at the 
MacWorld Expo:

I sent my benchmark results to Bill Duvall at Consulair Corp. and he 
phoned me right back with some comments:

1.  After the show he added register variables to his compiler.  With
    register variables the sieve program runs in 3.6 seconds.  Is that
    right?  I may have misunderstood him.

2.  Bill points out that the Megamax compiler uses 16 bit integers,
while his compiler uses 32 bit integers.  When the Consulair compiler
used  16 bit integers in the sieve program the run time with his old
compiler  was 6.3 seconds.

    This is an excellent point.  I neglected to notice whether the
other
    compilers used 16 or 32-bit integers.  Someone told me that the C
    standard stipulates that an integer's worth of bits must be able
    to span the entire address space.  I don't know about this.  Can
    someone comment?

3.  Bill doesn't think that the size of binaries for small programs is
    a significant test of a compiler.  With small programs it doesn't
    matter that much if some extra stuff gets loaded, while with
    larger programs almost everything ends up getting used.

    I personally have mixed feelings about this.  If you're limited to
    400K floppy disks, you probably don't want many useless bits on them.
    Bill says that he's planning a smarter linker that only links in what's
    needed.  The anticipated release date is a month after his April
    release (the one that will include floating point).

4.  Bill says that a better benchmark might have lots of function calls
    in it.  His compiler has paid special attention to making calls go
    fast, since he believes that real sized programs make lots of them.
    The sieve benchmark doesn't let him show off that feature.

    I'd have run the famous fibonacci benchmark if I'd had the time.
Many  of the compiler vendor booths were so packed with people that I
couldn't tie up their machines long enough to do everything I'd wanted.

Watch this space for additional details.  Consulair Corp. is lending
me a copy of their compiler so I can do additional evaluation.  I'll
post the results as soon as they are available.

- -Gordon Hamachi

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

Date: Tue, 26 Feb 85 16:23:12 pst
From: Larry Rosenstein <lsr%apple.csnet@csnet-relay.arpa>
Subject: Resource Editor Documentation (another bug)

Yet another typo in the resource editor documentation.

To define a 1-based list you create a field with type OCNT not ONCT as
I had originally stated.  (This was in fact a typo in the
documentation I received.)

Don't worry, eventually I will get it right.

Larry Rosenstein

UUCP:  {nsc, dual, voder, ios}!apple!lsr CSNET: lsr@Apple.CSNET

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

Date: Fri, 22 Feb 85 18:12:50 pst
From: erik%ucbssl.CC@Berkeley (Erik Kilk)
Subject: How to put Megamax on your disks


After working around on how to best place Megamax C files on your
disks, here is a good solution which has been working great for weeks.

In a RamDisk which has the System and Finder, place the Edit and
mmlink programs.

Put the Compiler and Header Files an another disk.  There is then
plenty of room to keep lots of source code and generated applications
here.  You can also put the dissassembler here.

With just this setup, you currently must exit to the finder in all
cases except to jump back into the Editor.  You must also specify the
drive name your sources are on each time (so name it something small,
like "C".)

You can use an external disk too, but that slows down the time it
takes the finder to prepare itself.

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

Date: Mon, 25 Feb 85 18:18:49 EST
From: Mark H. Nodine <mnodine@BBNH.ARPA>
Subject: MacModula-2 tips

For those of you who have a 512K mac but only a single disk drive
(probably a small group) who want to use the Modula Corp.'s Modula-2,
a configuration I have found to work well is to use a Ramdisk with a
system, finder, and the 512K library folder on it.  This leaves plenty
of workspace on the Ramdisk (enough so that you can even put a
Resource Editor on it if you so desire).  On the disk in the internal
drive, you can then put the Modula-2 compiler and linker, all that
they need, edit, Rmaker, and still have more room for your programs
than you are likely to have time to fill it at the rate the Compiler
works.

The Modula-2 compiler appears to be pretty solid (though SLOW...) and
is fairly complete.  The only features I find myself missing are
  (1) the ability to specify filter procs (action procs) to Toolbox
routines, and
  (2) an interface to the Printer driver.  I believe that the latter
could have been fairly trivially included by Modula Corp.

                Hacking away,
                Mark

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

Date: Tue 26 Feb 85 22:40:38-PST
From: Gustavo Fernandez <FERNANDEZ@SU-SCORE.ARPA>
Subject: First Impressions of Odesta Helix


These are my first impressions after spending about an hour and a half
with the new Odesta Helix dealer demo which was given out to all
dealers who went by the Helix booth at the Mac Expo in San Francisco.
I am not affiliated with Helix, etc. etc. and all the other
disclaimers.  I went through the guided tour during the Expo. I can 
only say that I am very glad I did because a lot of the required
operations are completely unintuitive at first and clumsy at second.

The program requires a 512K mac and two disk drives. I was able,
however to run it on a single drive 128K mac with lots of swapping
after ignoring the initial message. For most of my work, though, I
used a Mac XL and a 400K ramdisk. I placed Helix and 1 of the sample
data files (a library database) on the ramdisk, ejected the floppy,
and double-clicked on the library document. 42 (Ramdisk!) seconds
later, I got a window which showed three icons which represented
relations (and are called as such.)  This program, while supposedly
simple to use assumes that you already know a bit about relational
database theory - indices, queries, etc.

I will not go through a long explanation of all I saw. (There is
plenty!)  I will instead, talk about some of the pluses and minuses of
the package.

Once the package is up, there are few long pauses, but it is still
sluggish.  Nothing is a snap to do, but a few things can be very
awkward. Every once in a while, the arrow changes into a small disk
with an arrow pointing into it. This supposedly means that the program
is backing up the data in RAM to disk. (A sync operation for UNIX
fans.) This can sometimes get in your way but I couldn't really tell
how much as I was on the ramdisk.

The package seems to handle all relational operators except JOIN. This
was promised to me that it would be available in an upcoming release
by one of the implementers at the expo.

The package supports a series of nested objects. A document is a
collection which contains 1 or more relations. Each relation contains
fields, templates, selections, queries, etc. There seems to be no way
of bringing an object inside one relation into another. The standard
cut/copy/paste commands are unavailable most of the time to do this.

The program handles computed data fields quite well. (more on this
later...)  It does not, however, do any input validation other than
making sure that the data format comforms to 1 of a limited number of
standard types. It understands dates very well, but cannot understand
how to format a phone number other than it being an arbitrary length
string. A string is just a string. It can contain any characters
including CR's and no length limits can be imposed. It allows dollar
amounts expressed in dollars and cents, but not in cents only. (The
latter would be useful for low-cost items such as grocery prices which
are often better expressed as 149 cents, for example.)  A fourth type
is flag. This is simply a boolean. It cannot be used, however, as a
real flag! Although you can express it as yes/no, true/flase, 1/0, 
T/F, etc. there is no presence/absence format such as */space!

Forms in Helix are templates. Fields must first be "declared" by
dragging them from the field well in the relation window and setting
their name and format. Once declared, they can be selected from a menu
inside the template window. To define a part of a template, you must
first select a box type.  There are 15 types of boxes which only have
slightly different apperances but have vastly different behaivior.
Five of them seemed to be permanently disabled and I could not get
them to do anything. The ones that DID work were all in pairs: those
with boxes surrounding the fields, and those without. The five field
types were: entry field, display field, decoration box, label field, 
and repeat box. The above mentioned classification was derived using
much painstaking trial and error. The boxes look very much alike and
often the only way to tell what they did was to put the on the
template and see what errors you would generate. Repeat boxes are a
way to generate tables for reports. Unfortunately, there can be only
one repeat level making subtotal operations dificult. Also, it is not
obvious how one would place a total at the bottom of a form which may
span more than one page

Once you define a template, you must drag a selection into your
relation window. A selection pulls together templates, indices, and
queries. The only required entry is the template. Depending on the
template you have created, you either have an entry,, display, or
report form. (The machine doesn't care.) Queries must be predefined
and predeclared. There is no simple "search" command which can give
you immediate results from within a single window.

Finally we come to the part of helix which sets it appart from the any
other database: its computed field capability. Instead of using
mathematical formulas, Helix uses tiles. Each tile (except for the
"count" and "today" tiles) has holes where you can place a constant,
an icon, or the arrow of another tial. Each tial also has an arrow
which is either free which signifies the output of the calculation, or
points into another tial signifying an intermediate result. This
scheme bares a close resemblence to my own DataFlow program, except
that a tial has but one output. (This simplifies things a lot if you
think about it.) Both Helix and Dataflow suffer from a fundamental
problems. Tiles take up lots of screen real- estate. Not that most of
the tials themselves are large. (a few are indeed large) but the
connections between tials take up a lot of room, especially in a
moderately complex formula with many interconnections. There is also 
the spaghetti problem. Helix provides no cleanup capability so that
tiles don't overlap eachother or cross eachother's paths. (This is
guaranteed to be possible since the connected tiles form an inverted
N-ary tree.) Cleaning up the mess can be slow and cumbersome. Even
after you have goten your formula in a nice orderly fashion, it is
still often impossible to view the whole thing on the screen. A
moderately complex formula, which contained perhaps 10 tiles to
compute fines for overdue or lost books took at least two screenfulls
from top to bottom while the corresponding text formula would have
taken perhaps five lines.

On the positive side, the selection of functions in tiles is fairly 
complete. There are arithmetic, relational, logical, string search,
database lookup tiale as well as tiles for common math functions such
as square root sine and cosine. (why!?!)

Unfortunately, the tile arrows give no hint that the output can be of
at least three types: string, numeric, and boolean. For example, it is
impossible to concetenate a string to the output of a tile providing a
numeric result. This is often necessary to compute things like stock
codes where the price (a definitely numeric quantity) is concatenateds
with other information.

Perhaps the biggest problem with Helix is its inability to separate
the data from its format. You cannot lock the various icons such as
fields, indices, and calculations, so that the novice keypuncher
cannot modify them. This makes Helix dificult to use in a production
environment. Its use of pre-defined queries makes quick searches
tedious. Helix also has no graphics capability, in a time where
integrated packages such as Jazz, OverView, and even closely knit
packages such as the Microsoft series are appearing on the market.

Odesta Helix has been a long time in coming but there is still a lot
of work yet to be done before it is a truly useful production package.

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

Date: 25 Feb 1985 21:14:19 PST
Subject: Weak shoulder straps
From: Mike Schuster <MIKES@CIT-20.ARPA>

Beware of the metal rings connecting the shoulder strap to your Apple
Macintosh bag.  Mine broke as I was walking down the street, and my
Mac crashed to the sidewalk.  The newer bags have plastic snaps
instead of metal rings, maybe they will stand up better.  Fortunately,
I was carrying my thin Mac, had it been my two week old Hyperdrive, I
would have really cried.

Mike Schuster, cit-20

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

Date: 27 Feb 1985 01:32-EST
From: Avadis.Tevanian@CMU-CS-SPICE.ARPA
Subject: Mail order query

For the second month in a row I've noticed an ad placed in MacWorld by
PC Network.  Their prices seem to be better than most other advertised
in MacWorld.  In particular, they advertise an Apple external drive 
for $351, and a Shugart External Mac Drive for only $259.  Has anyone 
ever dealt with this organization (PC Network).  Their ad is FILLED 
with small print, asterisks, and the like.  In particular, they 
mention club membership, 3% cash discount already figured in the 
prices, minimum shipping costs.  (The ad is on page 139 of the March 
MacWorld in case you are interested).

Also, what is this Shugart external drive, and why is the price so
low?

        Avie

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

End of INFO-MAC Digest
**********************