From: "arobase, Salle multimédia" Newsgroups: comp.os.cpm Subject: Wanted: SAL/80 "Compiler" Date: Tue, 24 Jul 2001 11:49:41 +0200 Organization: Wanadoo, l'internet avec France Telecom Lines: 166 Message-ID: <9jjsav$dlj$1@wanadoo.fr> NNTP-Posting-Host: apoitiers-102-2-1-54.abo.wanadoo.fr X-Trace: wanadoo.fr 995980447 14003 193.253.213.54 (24 Jul 2001 13:14:07 GMT) X-Complaints-To: abuse@wanadoo.fr NNTP-Posting-Date: 24 Jul 2001 13:14:07 GMT X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2314.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300 I would like to get the following 235 pages manual of the SAL/80 "compiler". (Steve, do you understand now why I am so much interested in this "thing", and why I have been trying to get it for the last 10 years?... Do your best to find it!) Yours Sincerely, "French Luser" SAL80.TXT --------- (Retyped by Emmanuel Roche.) "Letters to the Editor", page 118, in "Microsystems", Vol.5, No.5, May 1984 Dear Mr., I'd like a chance to respond to Mike Barker's review of our SAL/80 package (March 1984). First, I should say that we HAVE changed the license contract to state EXPLICITLY that no royalties are required on programs written with the SAL/80 compiler package. We had assumed that such a statement would be redundant, SINCE THERE IS NO RUNTIME PACKAGE TO CHARGE ROYALTIES ON! But the fact that the question has arisen shows that assumption to have been in error. I really do not want to write one of those endless line-by-line rebuttals of all those points upon which I take issue with the reviewer. On the other hand, since more than 800 readers of MICROSYSTEMS have requested information about SAL/80 either by letter, phone or bingo card, here is some more information about the package. "SAL/80 is a package of macros that claims to be a compiler implementing a new language of the same name." A more accurate description would be that it converts the DRI macro assemblers into STRUCTURED macro assemblers. It is sometimes convenient to refer to this combination as a compiler. What distinguishes SAL/80 from other structured assemblers is the size and scope of the package. Where other structured assemblers are content to provide an IF-ELSE and one or two LOOP constructs, SAL/80 also provides a SELECT/CASE, five flavors of LOOP, a fairly complete set of console I/O primitives, and OPTIMIZES the test/branch code emitted by the control-statements. This optimization means a saving of two (Z-80) or three (8080) bytes in about a third of the branches generated. The manual is large (235 pages), and considerable effort has been expended to make the contents accessible as a reference. In addition to the 3-page table of contents, there is a 5 1/2-page subject index. The compiler source (which is given in Appendix A) has its own table of contents and index. Chapter 1 (45 pages) covers the syntax and semantics of the various constructs of the "language", with flow-charts and hints on how to use each directive. There are cross-references to other sections of the manual and to the DRI MAC/RMAC manual. Chapter 2 (31 pages) is a tutorial on SAL/80 in the design and coding of well-structured modular programs. A "worked" example is given in the form of an elaborate memory-test program, with "snapshots" of portions of the code at various stages of completion. Chapter 3 (50 pages) consists of the complete listing of the "worked" example in its final form. There are about 1,150 lines of SAL/80 code set off by enough white space and comments to expand it to about 2,000 lines in all. The code is very readable, and anyone undertaking to learn SAL/80 would be well-advised to spend some time with this chapter. Chapter 4 is seven pages of tips on how not to get mugged by the various snares and pitfalls of the SAL/80 package and/or the DRI macro assemblers. Appendix A is the compiler source (70 pages), and, quite aside from the actual utility value of the program it represents, is an interesting example of what can be done with the macro facilities of MAC and RMAC. Appendix B covers the error messages (generated by SAL/80) by showing what will actually appear on the screen, and explaining its significance. Appendix C is a summary of the SAL/80 commands, with the formal syntax and cross-references to both the pertinent text in Chapter 1 as well as to the implementing source code in Appendix A. programs in SAL/80 are written by starting with a template that outlines the "generic" shape of the program, and may be altered to suit the taste of the individual. This consists largely of commented-out pre-declarations and MACLIB statements. Almost all data structuring and manipulation is done as one is accustomed to do in ordinary assembly-level programming, but all of the CONTROL structuring (test/branch code) is accomplished by using the SAL/80 control statements. These control statements work almost precisely as do the corresponding statements in Pascal or C, with IF-ENDIF, IF-ELSE-ENDELSE and SELECT-CASE-ENDSELECT providing most of the forward branching, and the several loop statements generating the backward branches. The loop structures include the NON-INDEXED loops WHILE-ENDWHILE (test/exit at the top), REPEAT-ENDREPEAT (test/exit at the bottom) and LOOP-UNTIL-ENDLOOP (test/exit in the middle), as well as the INDEXED loops FOR-UNTIL-STEP-ENDFOR (test/exit anywhere) and DO-ENDDO (test/exit at the bottom). The "utility" macros are primarily concerned with console I/O, although there are some string operations (search and compare) and some 8- by 16-bit multiply and divide routines. The console I/O primitives reduce by an order of magnitude the number of keystrokes required, as compared with that of "naked" assembler. A program of 100 lines (exclusive of comments or white space) will compile in about one minute on a 6 MHz machine using 8" disks. Although this is rather slow, programmers experienced in the use of the package have found that the overall reduction in development time is great enough to make this acceptable. We, at PROTOOLS, expect that the next version (3.0) will be a separate, native code preprocessor compatible with other assemblers, will support Zilog as well as Intel mnemonics, and should run two to four times faster. In the meantime, the price of $59 (which includes a free update to version 3.0 when available, later this year) is intended to compensate for the slowness of compilation. A SAL/86 for the IBM PC will be offered for $99 at the same time. As to ease of use, the point can be argued either way: If you program in assembler only on rare occasions, say, one 80-line device driver a year, then it's probably not worth the effort to learn to use the package. If you program in assembler on a continuing basis or write large programs, then any structured assembler you use will repay the effort many times over. For a review of SAL/80 written by a user, see the February 1984 issue of Dr Dobb's Journal. Steve Newberry PROTOOLS 24225 Summerhill Avenue Los Altos, CA 94022 EOF