[comp.lang.c] Tenne-c New C Compiler

stevenj@umbc3.UMD.EDU (Steven Vore ) (05/09/88)

I was recently (as in yesterday) given this announcement for
a new C compiler.  Please do not direct any questions concerning
this product to me - all I know is what you see here.  Please 
contact the company for further information.  Also, this is long,
so please edit accordingly when replying via news.
-Steven
stevenj@umbc3.umd.edu       ;-)
-----------------------------------------------------------------



TITLE:   Tenne-C Announcement



                          Tenne-C programming language
                         ... from Good Ol' Boy Systems.


NOTE: The following is rated PG; programmer's guidance should be exercised.

For all those unfamiliar with Tenne-C, the comment delimiter is WHISPER.  The
computer stores all WHISPERed comments in memory, but the instruction execution
unit can never quite decode them, so they are ignored.  Some beta site users
have reported an occasional problem with IBM clone machines.  These machines
may get slightly confused or mildly paranoid due to the whispered remarks in
the background, but the effects are usually limited to an occasional mutterance
printed on the display.  Note that the optional extended obcenity instruction
set should not be installed in clone machines.  Should such a machine crash,
you could be arrested for making an obscene clone fall.


                       General Idiosyncrasies of Tenne-C

Data is referred to as Ciphers; the start of a data section should be so
labeled.  Data which is external to a given file is denoted  by the term
YONDER, similar to the EXTERNAL directive.

Single arguments are not passed to functions individua lly; rather, multiple
passes are made simultaneously to all functions.  Thus, in Tenne-C, we speak of
feuds rather than arguments.  This is an extremely powerful, albeit somewhat
destructive feature of Tenne-C.

Relational operators work similarly to those in other languages, but in Tenne-C
these are called kinfolk operators.  It will be noted that some of these
interrelaiite better than others.  Kinfolk operators include:

        Bettern                 (mines) bettern (yourn)
        Boutlack                (mines) boutlack (yourn)
        Nearlyboutlack          (mines) nearlyboutlack (yourn)
        Worsern                 (yourns) worsern (mine)
        Nearlyboutsgoods        (yourns) nearlyboutsgoods (mine)
        Lack                    (mines) lack (yourn)
        Sortalack               (mines) sortalack (yourn)
        Differrtn               (yourns) differrtn (mine)

The Boolean operators are somewhat different than most.  Note the lack of AND
and OR operators:

        taint
        istoo
        tis
        aintdunnit
        nary
        nope

Variable assignments must be explicitly declared with the AHDODECLARE
directive, although one declaration can serve a block of variables.  Variable
assignments can be quite interesting and flexible, as can be seen in the
following examples:

ahdodeclare:            a's     nearlybout      3
                        b's     zacktly         4
                        c's     bout            2
                        d's     morerless       TWEV
                        e's     2, an imeanit   WHISPER this is a constant

Certain constants are implicit, such as SCOSHE, LIBBIT, FAV, SEM, NAN, LEM,
TWEV, THUTTY, etc.  Such obvious values need not be declared, as they reside in
the liberry books.

Arrays must be declared with the AHDODECLARE statement, and are referred to as
messa, as in:

        Ahdodeclare(dinner)     messa(fish)     TWEV

Note that until you get the hang of array declarations, you may encounter a
SYNTEXT ERROR; this is a syntax error which has been taken out of context.

The program section is referred to as CHORES and is labeled as such.  Several
loop and conditional constructs are available. These include the following:

        Hauloff and do
        Fer, til loop
        Whol, longasyerattit
        Iffen, theyen
        Yehbut, nowait

Code is grouped into hopefully functional units with the standard, [] and ()
operators, although they are given slightly different names.  They are still
called braces, but the [] are called kibbuls and the () are called bits.  Thus,
you can have braces and bits or kibbuls and bits.  Braces and kibbuls are, of
course, meaningless.

If a KIBBITZ ERROR is encountered at compile time, that is a single kib [ with
a pair of bits ().  The ommision of a single ] can also result in a NO BULL!
error.  Very serious compiler errors will be preceeded by the SELF message.
That's right, brace yourself.  We're talking about such errors as SOURCE FILE
TURNED TO TRASH, SOURCE FILE CONVERTED TO RUN FILE, HEX PUT ON SOURCE FILE,
that sort of thing.  Errors of this type will be followed by the message "START
ALL OVER FROM SCRATCH", and the offending source file will, of course, be
deleted.

Error messages can be quite strong indeed.  We have one of the most arrogant
compilers in the business, a source of great pride for us.  Typical error
messages include:

        WELL, IF THAT AIN'T ABOUT THE DUMBEST DANG THANG I EVER SEEN!
        WHADJA DO THAT FER?
        ERROR TWENNY SEM, DUMB AICE!
        DAMMIT, BOY, HOW MANY TIMES I GOT TO TELL YOU?!

The compiler is referred to as the THRASHER and is invoked with the simple
THRASH directive.  BE SURE NOT TO OMIT THE "H" FROM THIS COMMAND!!!  If you are
unsure whether you want to compile the entire program, you may use the more
general THRASH AROUND command.

Good Ol' Boy Systems still clings tenaciously to the notion that single-sided
diskettes are better than double-sided diskettes.  We maintain that a
single-sided diskette is in opposition to the laws of physics as we know them
today.  However, we further maintain that, at some time in the future, Good Ol'
Boy Systems will be the first to discover the unlimited storage of the
heretofore undiscovered "nether side" of single-sided diskettes.  Now THAT,
folks, is virtual disk space.

A software linker is not yet available.  Until the virtual disk space is truly
solved, we strongly recommend double sided disk drives.  You can then purchase
our hardware linker, which allows you to superglue two single-sided diskettes
together.

We're working on other things, too.  For instance, there's our new operating
system, MS-HOSS, with the 'Mater Vine file structure.  And for 'Mater Vine
support, there's 'Mater Stakes.  And if you thought SideKick was good, wait til
you see our new ButtKick utility.  Expected to be widely available by the end
of next month, regardless of what month this be, it is being developed using
our powerful new Four Barrel Tenne-C.  While we aren't yet ready to develop a
Turbo Tenne-C, we feel that the high data compression ratio of Four Barrel
Tenne-C will suffice.

Here is a sample of our work.  This is part of our new floating point package,
written in LOWLIFE, our low-level programming language.

        UNSTACKUMDOTNUMBER      WHISPER rip number off the stack
        JIP DOTREMOVER          WHISPER jump if punctuated
        DONTDONOTHING           WHISPER no op
        JUMPEM2DGITBACK         WHISPER return
        GUMDROPS4EARPLUGS       WHISPER sweet things in my ear

DOTREMOVER:
        RDLDOTNUMBER            WHISPER Rikki, don't lose that number
        ASRDOTNUMBER            WHISPER shift the number right
        JISPDOTREMOVER          WHISPER jump if still punctuated
        ABSOLUTELYNOT           WHISPER negate number and take absolute value
        BZZBZZBZZ               WHISPER WHISPER WHISPER EM2DGITBACK:
        RTS                     WHISPER return to stack
        RETURNS                 WHISPER return estimated truncated unary radix
                                WHISPER numerix stuff

--
               THIS SPACE       Andrew B. Peed
                FOR HIRE        AT&T Bell Laboratories
          Financing Available!