[net.micro.cbm] Promal

dean@ssc-vax.UUCP (Dean A Hayes) (11/26/84)

     I recently bought a compiler package for the  C64  that  I  thought
     others out there might be interested in.  The package is the PROMAL
     compiler from System Management Associates.

     From what I can tell so far (after only a week) it appears to be  a
     pretty  good piece of software.  It includes a compiler, an editor,
     and an executive (operating system).

     The language itself I would describe as  somewhere  between  Pascal
     and  C.   By  this I mean it has the feel and clarity of Pascal but
     allows you to get to the machine the way C does.  It is  structured
     very  similar  to Pascal, requiring all procedures and variables to
     be defined before use.  One interesting point is that in PROMAL in-
     dentation  is  significant.   The  extent of structures such as IF,
     WHILE, REPEAT, etc. is defined by the  indentation  as  opposed  to
     keywords  like  BEGIN/END.   The  language supports byte, word, in-
     teger, and real data types.  Strings are treated as arrays of  byte
     very  similar  to  the way they are in C.  Records, Structures, Un-
     ions, and Multiple dimensioned arrays are not supported.  The  only
     real  serious  of  these is the lack of multiple dimensioned arrays
     and since this is a version 1 release I wouldn't  be  surprised  to
     see  this  changed  in  the  future.   Pointers are also supported,
     though they are not the same as pointers in other langauges.   Pro-
     cedures  and  functions  work  pretty much the way they do in other
     languages and they allow recursion.

     The editor included is very simple and fast to learn  and  is  more
     than  adequate for developing programs.  A library is included that
     provides input/output and other useful functions.

     The documentation included with the compiler is  approximately  200
     pages  long  and  is  packaged  in a three ring binder.  It is very
     comprehensive and well written.

     I strongly recommend this package to anyone looking for a low  cost
     compiler for the C64.  The price is only $49.95 + shipping and han-
     dling.  Advertisements and order forms are in all the magazines.


                     Gary Albert
                     Boeing Aerospace, Seattle

cfj@omovax.UUCP (Charles Johnson) (12/10/84)

What does any know about a programming language called PROMAL for C-64 ?
I've heard some good thing about it on Compuserve.

Thanks,

Charles Johnson
Hillsboro, OR

gary@ssc-vax.UUCP (Gary J Albert) (01/23/85)

     Previously I had posted an article about the  PROMAL  package  from
     Systems  Management Associates and thought that now that I have had
     a little time to work with it I might be able to evaluate it a lit-
     tle better.

     First a brief description of the package, included are:

             - An Executive (operating system)
             - The compiler
             - A text editor
             - Documentation
             - Examples

     The operating system (or what the documentation  calls  the  execu-
     tive)  is certainly the best I've seen so far for the C64.  It most
     certainly beats the resident BASIC system, and since CP/M does  not
     work  with  a  large  portion  of  the C64's out there it is also a
     better choice than that.  Briefly some of the commands to  this  OS
     are:

             - files         ;lists the directory
             - type          ;list a text file to the screen
             - map           ;shows a memory map
             - job           ;runs a job file (batch)
             - load          ;loads an executable

     There are others but these are the most used ones.  If a command is
     typed  in  which  is  not  part  of  the executive then the disk is
     searched for an executable file and if  found  is  loaded  and  run
     (much  the same as CP/M).  The compiler and the editor are examples
     of this.  The executive also has something similar to the 'history'
     in  Unix.   A  previous  command can be recalled and executed.  The
     function keys can also be programmed to perform  any  function  the
     user  desires.  In addition, I/O redirection is supported, allowing
     the output of a program or command to be sent  to  one  of  several
     different  places,  ie.  the  screen  (default), a disk file, or to
     memory.  Input redirection is similar.

     A unique feature is that of files in memory.  The PROMAL  executive
     maintains an area of memory that it treats as a file.  There can be
     more than one file in memory and the executive takes  care  of  all
     the  book-keeping.   These  files  look  to the user just like disk
     files with the exception that I/O  is  extremely  fast.   Basically
     this  implements  a  type  of RAM disk.  One thing to keep in mind,
     however, is that if the system is looking  for  a  given  file  (to
     edit, to compile, etc.) it first looks in the memory files.  If one
     of these has the same name as one on the disk  the  one  in  memory
     gets used.  To circumvent this the user must "unload" the file.  No
     big deal, just something to keep in mind.

     The compiler itself is very simple and easy to use.  It accepts  as
     input  an  ASCII  source file (true ASCII not PetSCII).  The output
     object file can be directed to a  file  or  to  memory.   Compiling
     directly  to memory is a nice feature when in the debug stage since
     you can test the program without having to wait for the file to  be
     written to the disk.  As mentioned above, this is FAST.

     The language is pretty good, as with  all  early  version  products
     there  are  some problems and things on my wish list, but overall I
     am quite impressed.  It is a high level language that allows access
     to  the  low  levels, there is a useful assembly language interface
     and you can get to the hardware.  The control structures  are  very
     similar  to Pascal or C, these include the usual: if, while, repeat
     - until, case, etc.  Functions and procedures are  also  supported.
     Data  types of byte, word, int, and float are supported and strings
     are handled much the way they are in C.  A string  consists  of  an
     array  of bytes terminated by a 0 byte (NULL).  Speaking of arrays,
     this brings up one of the most serious omissions in  the  language,
     namely  arrays can only be single dimensioned.  The ability to have
     multiple dimension arrays is in my opinion very important.  I real-
     ize  that  they  can be implemented as separate parallel arrays but
     the programmer should not have to deal with this.   I'll  touch  on
     this again later.

     An interesting feature is the method of defining  the  scope  of  a
     structured  statement.  Unlike Pascal and it's BEGIN and END or C's
     curly brackets, PROMAL  makes  the  indentation  significant.   The
     statements to be executed within a given structure must be indented
     2 spaces.  At first this seems a bit strange but  I  must  admit  I
     kind  of  like  it  now that I've become accustomed to it.  Besides
     this way you can't write code with poor style.

     Overall I am impressed with the language while realizing it is  far
     from  perfect.  Features I would like to see added include user de-
     fined data structures and of  course  the  aforementioned  multiple
     dimensioned arrays.

     The text editor included in the package, while not  the  editor  to
     end  all editors, is quite adequate for writing programs in PROMAL.
     It works in real ASCII to produce the source  files  for  the  com-
     piler.   The  documentation  says  that  the  editor was written in
     PROMAL though the source is not provided.  The editor is just  your
     basic  program editor, no word processing features.  It has search,
     search and replace, insert, delete, and all the other things to  be
     expected.  I find it quite useful.

     The documentation provided is really quite  good.   I  would  never
     have  expected  anything  of  this  quality with a $50 program.  It
     comes bound in a nice 3 ring binder that opens flat.  It covers the
     executive, the editor, the compiler, and the language.  It seems to
     be quite complete, though I do find  myself  searching  through  it
     quite  a bit.  Fortunatly it is indexed so it's not to big a job to
     locate things.

     One last note, the level of support for this product  is  something
     SMA can be proud of.  Never did I expect a company to support a $50
     product the way they have.  Since purchasing it I have  received  a
     list  of  patches  to  correct some known bugs, and recently an an-
     nouncement of the next version.  For a mere $7.50 they are shipping
     me this latest version.  And to top it all, upon receiving my check
     they sent a post card telling me on what date it would be  shipped.
     Usually that kind of service is unheard of in products costing many
     times this.  For this reason I fully expect that  the  problems  in
     the  package  (arrays  again)  will  be  fixed  and  I  wouldn't be
     surprised to see some nice features added in the future.

     If there are any questions about the package I would  be  happy  to
     answer  them  if I can. Mail to me directly and if it is of general
     interest I will summarize to the net.


                             Gary Albert  (ssc-vax!gary)
                             Boeing Aerospace Company
                             Seattle, Wa

erosenth@aecom.UUCP (Elazar Rosenthal) (11/15/85)

       Has anyone ever used Promal?  From the information  I  got
it sounds very good however I would like to here somthig about it 
from someone who actualy used it before I blow $50 on it.  

veach@ihuxl.UUCP (Michael T. Veach) (11/16/85)

I've used Promal for over 6 months and have been very happy
with it.  

What is Promal? A very good attempt to put UNIX on a C-64. Of
course, with only 64K of RAM and slow disk drives, it has many 
limitations.  The system consists of three main programs 1) a
shell (called the executive), 2) an editor and 3) a compiler.

-----------

The compiler produces relocatable code (appears to be a P-code)
and, as such, many, depending on size, programs can be load into
memory at once.  To run a program (e.g. myprog) the system first
looks in memory for it (myprog) and if it is not found looks on
disk for it (myprog.c).

Command line systax includes i/o re-direction of stdin and stdout.

myprog arga argb <infile.z >outfile.y

Sorry no pipes.
______________________

All disk files are of the form xxxxxx.y (notice the '.' followed by
a letter) and must be SEQ type.

Some special files have 1 letter names. For example:

myprog <w >p

Indicates to take the input from the Workspace file (an in-memory user file)
and send the output to the printer.
_________________________

Shell scripts are provided. However, to execute a script (e.g. myscript)
you must enter:

job myscript

rather than just:

myscript

______________________

The compiler uses a  C-like syntax language. Variables of BYTE (1
char), INT (2 char signed) and WORD (2 char unsigned) are
supported. (Floating point is supported also, but I always unload
the floating point functions at boot time to get more space). The
systax of the language uses identing (2 spaces) where C would use {
and }. The compiler fits entirely in memory.  If your source is in
W, there is space for you object module in memory and the
compiler is already in memory then the compile
is fast. Large programs require the compiler to be read from disk,
source to be read from disk, the object module to be written to
disk, and the editor to be  unload and thus re-read from disk on
next use.  Without FLASH the limiting factor is the disk accesses. 
With FLASH the limiting factor is the compiler. 

_______________________


Its easy to write hooks into the (C-64) kernel from Promal.

Promal programs execute fast. I was able to write a 1200
baud terminal emulator with it. I don't know of any other
WORKING 1200 baud non-assembly language terminal emulator.
(Perhaps one of C-compilers can produce fast enough
code for this application?)

As of this time, I have not yet seen a sprite or sound 
package for Promal.  However, I think I remember seeing
that a package was being developed.

_________________________________________________


If you are really an assembly language or hardware
type of person then you'll love Promal in that it provides
almost the same speed and freedom as assembly language, but
is easier and less error prone than assembly language.

__________________________________

If you do not really don't care about the details of
how the machine works and are willing to pay some
performance then you should really consider something
else, such as COMAL.  COMAL supports almost all the graphic
and sound features of the C-64 in a high level language,
COMAL is much faster than BASIC but slower than Promal.

_________________________________________________

COMAL and Promal are trademarks of two different groups
people that have provided something other than mindless
games for the C-64.  Show your support for this good
work by buying their products rather than stealing a copy.

__________________________________________


My choice:

Assembly language to make fixes to existing 
assembly language programs.

Basic if the task is very short, speed is not
important and/or program is to shared with
others who don't have Promal nor COMAL.

Promal for applications needing top speed or just
the joy of programming (its no fun if the computer does everything
for me!).

COMAL for tasks that would take too long to
develop in Promal or if it needs sound and/or sprites.

_______________________________________


The opinions expressed here are my own and may not
agree with anybody else's either living or dead.


	Michael T. Veach
	  ihuxl!veach
-- 

	Michael T. Veach
	  ihuxl!veach

fox@bnrmtv.UUCP (Richard Fox) (11/26/85)

> 
>        Has anyone ever used Promal?  From the information  I  got
> it sounds very good however I would like to here somthig about it 
> from someone who actualy used it before I blow $50 on it.  

As I remember it, Promal is public domain software. It is worth having but
I would make sure if you can access legally for free.

rich

ee173fde@sdcc3.UUCP (J LEE) (12/02/85)

In article <210@bnrmtv.UUCP>, fox@bnrmtv.UUCP (Richard Fox) writes:
> >        Has anyone ever used Promal?  

> As I remember it, Promal is public domain software. It is worth having but
> I would make sure if you can access legally for free.
This is simply not true. Comal is public domain. Promal is a well-written 
compiled language with a flavor much like C and UN*X.

gibson@unc.UUCP (Bill Gibson) (12/02/85)

> >        Has anyone ever used Promal?  
>
>As I remember it, Promal is public domain software. It is worth having but
>I would make sure if you can access legally for free.

Whoa, there. If this is the same Promal I'm thinking about, it's a
Commercial Product (a product for which payment is required). 
The Promal I'm thinking of is put out by a company in Raleigh, N.C.
and is a high-level language which slightly resembles C.

I was looking into getting Promal about a year ago, and I got the company
to send me their advertising literature. From what I recall, the language
uses indentation to show how code is nested (instead of using begin-end
or {} ). This forces the code to be written in a strict format, but I 
consider that format to be an easy one to read, so this feature isn't
a problem to me.

The thing that I didn't like about the language was that the basic
package you get (~$50) includes an "executive" (similar to a shell, I guess)
and a compiler which compiles *only to pseudocode*! The executive then
interprets the pseudocode of any program which is "run". If you want to
compile to native 6502 (i.e. 6510) code, you buy a "stand-alone" version 
of the package, which allows you to compile programs into load-and-execute
code. Come to think of it, the "stand-alone" package might simple link in
a copy of the executive for your program to access, instead of compiling
down from pseudocode.

My problems with pseudocode compiling are 1) I want to know *exactly* what
code is executing because 2) I want to program real-time applications which
I might have to tweak based on the numbers of instructions in a given time-
critical section. Even if Promal's pseudocode interpreter is fast, I might
run into time problems. I haven't used the language, though; are there any
Promal users out there who can be specific about speed?

If I were programming non-time-critical code that I didn't plan to sell,
I might use Promal anyway, since it looks like a useful language. On the
other hand, I might rather get one of the C compilers.

Bill Gibson
gibson@unc                   ...[akgua,decvax,philabs]!mcnc!unc!gibson