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, Seattlecfj@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, Waerosenth@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!veachfox@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