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