CURRENT NOTES DEC '87/JAN '88 O S S P E R S O N A L P A S C A L V . 2 Some Day They Will Get It Right Review by J. Andrzej Wrotniak It took OSS a week to charge my credit card and four months to ship the goodies, but finally my parcel with the new version of Personal Pascal arrived. This is an important event in the ST world, as there are probably more people out there programming their ST's in Personal Pascal than in any other language dialect (don't even mention ST Basic, please). The popularity of Personal Pascal has good reasons: its Version 1 was the most painless introduction to GEM programming I have seen, being also a very decent implementation of the language standard, well-documented and with very few (from Version 1.10 or so up) bugs. It also was inexpensive, and the manual itself was well worth the $50 I have paid for the whole package. THE GOOD NEWS Not only gradual improvements were introduced in this version; some major work was done as well. The major changes are: new shell and editor, expanded library, removed 32k limitation for a data type (in most instances read: array size), improved (still) documentation, general cleanup and debugging. With some exceptions (hopefully remedied soon), a nice and well-thought job was done here. Here is the quick walk-through; the bad news (also quite a lot of it) and the bottom line follow near the end. PROGRAMMING ENVIRONMENT The shell will look very familiar to the users of Version 1, but the design is better. You may perform disk operations without leaving it (goodbye my trusty Diskman accessory!), you may print files (by calling an enclosed printout program, which may be replaced with any other of your choice), and you may very flexibly decide, where the shell will look for compiler, linker, libraries or the source files. For those who like to run things from a RAM disk, the last one is a very welcome feature. The entirely new editor is a vast improvement from the original version. It is GEM-based and allows you to edit three documents at a time. It is also very fast (not as fast as Tempus, but faster than anything else), and -again -quite well-designed. (Read on to see what is wrong with it). COMPILER, LINKER AND LIBRARIES I have recompiled and relinked four of my old programs (the largest one 150k of code) without any difficulties. The only exception was due ST - 1 - ST CURRENT NOTES DEC '87/JAN '88 to a bug (wrong radius of an ellipse in a window) present in Version 1 and now corrected -I had to remove instructions working around it. The compiler is still very fast (the large program took 90 seconds to compile and link from a RAM disk, with my own libraries read from a floppy). On the other hand, no desktop accessory would compile properly -an obvious bug. The language dialect itself introduces some relaxation of strict standard Pascal type-checking rules, and does it in a very reasonable way (e.g. two separate types are compatible if they are structurally equivalent). In general, it compares favorably with most others on this or other machines. No open (variable-size) array parameters are provided (contrary to some early rumors), but this limitation can be easily bypassed by typecheating. If you want to know how, see the July issue of CURRENT NOTES. The REAL variables are still six bytes long (which gives you more than 10 decimal digits of accuracy, in-between the standard single and double precision), and I do not miss the double precision much. Also, the floating point libraries (as the trig and log functions, for example) were re-worked and deliver now the full accuracy (previously about three decimal digits less). The general impression is, that the cleanup was quite significant, even if not so obvious at first glance. I have counted at least eight bugs (or annoying features) fixed, and there are certainly many more improvements I haven't noticed. On the other hand, some new bugs were introduced (see the bad news below), so the bill of health is not as clean as I had expected. The GEM library was expanded, as well. Nothing really spectacular, but many useful additions. These include, among others, screen buffering, the whole set of Peek and Poke routines, VT-52 commands (previously available in the public domain, anyway) and few others. Obj_ReDraw, a significant omission in the old version, is also included (at least documented, but does not seem to be in the library -strange). MORE GOOD NEWS: DOCUMENTATION The original manual ranged from good to very good; the new one -from very good to very, very good. The paperback looks much thicker than the previous one, which is mostly due to larger print (Publishing Partner??) and more empty space left on pages, but quite a few things were added and a detailed comparison shows that a lot of re-editing work was done, too. Mark Williams C may be the only compiler with as good, or better, documentation available for our computer. If you program in another language, such as FORTRAN, the language reference section is enough to teach you to code in Pascal, in spite of the author's claims (or disclaims?) to the contrary. A subject index was added, and as much as I try, it is difficult to find anything (well, almost) missing. ST - 2 - ST CURRENT NOTES DEC '87/JAN '88 Only two small additional improvements come to mind: a short summary of differences from the Pascal standard, and list of changes from the previous version -I am sure some, if not all, users would find those quite useful. THE BAD NEWS: BUGS My complaints and reservations can be divided into two categories: bugs and features (or design flaws). Obviously, the product was rushed to the market. OSS announced, that the compiler was under beta testing in May (that is when they started to accept the money). This is hard to believe: some of the bugs in the new version are so obvious, that they do not require any sophisticated test matrix to be identified. Do you folks really mean, that in four months none of your crowds of beta testers has tried to compile a simple desktop accessory? (Yes, you've guessed, this just does not work.) Do you mean that nobody tried to declare all the auxiliary library procedures just to check the spelling? (Yes, you are right, some of them seem to be missing or wrongly documented). To use the famous Ted Koppel's phrase: Come on, come on, Mr. Pozdnyakov! You do not need industrial testing procedures to discover these kinds of bugs: just give the compiler to three smart hobbyist programmers and they will bring you the whole laundry list in a week. The editor crashed on me four times in three weeks (three times after saving the file, thus only mildly annoying, and once upon reading) without any obvious reason; this, of course, has no right to happen. MORE BAD NEWS: DESIGN FLAWS For me these are even more irritating than bugs. The bugs just happen, while the design flaws are intended to be a part of the package. Somebody there thinks I should live with them. Let us start from minor things. As I have mentioned before, the programming environment is a major improvement from the previous version -in principle, that is. Some details, however, spoil the otherwise good image. The shell uses its own file selector dialogs, which are quite functional, but do not have the right feel: much larger then necessary, require running your mouse all around the screen. (They also look ugly, which is, of course, a matter of taste.) But the editor, once entered, uses the standard GEM selector, and does not remember the directory passed to it from the shell -another irritating oversight. Seems like a last-minute patchwork. Many may not like the fact that you can view each document only full-page, switching the pages as necessary. Even a simple half (or one-third) page windowing would be a very desired addition. Also, the find-and-replace features are implemented in an unorthodox, confusing and inconvenient way. ST - 3 - ST CURRENT NOTES DEC '87/JAN '88 Here we come to another feature missing in not only the OSS's editor, but in many others, as well. I am sick and tired of switching my keyboard habits every time I use another file editor (or word processor) -and I am not the only one who switches at least three or four times a day. I understand that different editors may have different features, but the basic (and most frequently accessed ones) are always the same: mark a block, delete a line, delete a word, undelete, move around the screen, etc. We all know, that making the keyboard functions userdefinable is not something expensive or difficult to implement -is anybody from OSS listening to this?? Coming back to the language itself, my main reservations concern the modular compilation. It is still not as useful as it could be. There are two reasons for this. First, it is possible to use in your separately compiled module any variables not local to its procedures only in the most awkward way imaginable: you have to re-declare all the variables from the main program. This means, that (1) they cannot be shared only between the procedures in the library module, without being accessible to the main program, (2) each time you use such a module with a new program, the module itself has to be modified and recompiled. This nullifies a large part of the advantages of the modular compilation, and the solution adapted in Prospero Pascal (variables shared only at the module level) makes much more sense. Second, the linker is not smart, i.e. it includes in the final program all procedures from a linked module, regardless of whether they are called from the others or not. This again means, that usually you will have to customize (and recompile) the library modules for each new program. The regular libraries, PASGEM and PASLIB, are (of course) linked in a smart way, that is, on an as-needed basis. They cannot be, however, expanded, as the package does not include a library manager. A pity. THE BOTTOM LINE In spite of the criticism I may have towards Personal Pascal, I found Version 2 worth recommending. The features, performance and feeling are significantly better than in Version 1 (which was pretty good by itself), and the price is very good. Knowing the traditionally good OSS performance in customer support I believe, that the bugs I am writing about will be fixed soon -maybe even before Christmas (my version number is 2.01, just in case). More, on the ST Pascal field, OSS does not seem to face any significant competition: I am still waiting for the promised new release of Prospero Pascal ("certainly before the Fall", they've said...), but the wait for Prospero may be long and the outcome uncertain. If only OSS (or CCD in Germany, where Personal Pascal was made) could ST - 4 - ST CURRENT NOTES DEC '87/JAN '88 devote some more design thought to the user interface and the modular features, the compiler would be hard to beat -for any computer, for any price. My advice is short: go and buy it (and then watch for the fixes). You will not regret it. LAST-MINUTE UPDATE After having written this review I logged into the OSS bulletin board in California (this is, by the way, a smart, nice and inexpensive way to provide decent user support). Yes, the company is aware of the bugs I have mentioned (and some others, too), and there is a list of them posted. I found this honest and useful. The fixes are being promised real soon (whatever that means). The worst thing is, that the new editor does not work with the new blitter chip or new ROMs (but if you can afford a Mega, you can spend an extra $40 for Tempus). I will watch the news periodically -expect a brief update in the next (February) issue of CURRENT NOTES. Merry Christmas to all Pascal programmers -and all the Atari freaks at large! ST - 5 - ST MOD V3.0 .COM Mcode ula-2 OSS PASCAL TDI Modula-2 Prog ST ST IBM 8087