TweetFollow Us on Twitter

Meridian Ada 4.1
Volume Number:7
Issue Number:7
Column Tag:Ada Edition

Meridian Ada for the Mac

By Paul Zarchan, Steve Nelson, Cambridge, MA

Background and Introduction

In 1975, in response to the perceived software crisis, the Department of Defense published a set of requirements that should be met by any programming language before it would be allowed for use. Since none of the languages at that time met the requirements a competition was announced for the design of a modern programming language. Four teams took part in a competition which was won by Honeywell Bull in Paris. After the winning proposal was selected in 1978, it was distributed to institutions throughout the world for comment, and after subsequent amendment, it was accepted as a standard in the USA. The new language was known as Ada. Ada currently receives a great deal of support from the US Department of Defense and has been accepted as an industry standard by the Commission of the European Communities.

For those readers who either want to or are forced to use Ada there is good news. Meridian Software Systems has introduced a relatively low cost (compared to other Ada compilers) Ada compiler for the Mac. Full generics, tasking and separate compilation are supported with the Meridian Ada 4.1 compiler.. The compiler comes with an interactive source level debugger, a utility library consisting of a set of Ada packages for use with the compiler, an optimizer which performs a variety of local and global optimizations and the Mac Environment Library which binds the Macintosh Toolbox and operating system. In addition, the package also contains a notebook of extensive documentation and 11 800k installation disks (including MPW 3.0). Also included are many Ada source code examples to illustrate features of the language and it’s integration with the Macintosh. Programs created with Meridian Ada 4.1 can run either as tools under MPW or as Macintosh applications. The Meridian compiler runs on Macintosh platforms ranging from an SE to an FX with at least 1 MB of RAM. We tested it on an old 16 Mhz Mac II.

Ada Installation Process

The manual describes the MPW and Ada installation process. Unfortunately the process is not completely clear and it is assumed that the user already has a knowledge of MPW. In fact, if the user does not have a knowledge of MPW, the probability of a correct installation, without help, is virtually nil. We believe that future versions of this compiler should be more user friendly and assume that the user does not know and may not even be interested in MPW. This approach was taken with Absoft’s MacFortran II.

Sample Problem

In order to test the ADA compiler a simple floating point example was chosen (not supplied by Meridian) in order to test both the language’s access to important scientific functions and executable speed. For those readers who do not yet know Ada (but may soon have to) a FORTRAN listing of the test program appears in Listing 1. We can see from the source code that we are merely looping through various transcendental functions 100,000 times.

_________________________________________________________

 ntim=long(362)
 x=1.
 do 22 i=1,100000
 y=sin(x)
 y=log(x)
 y=exp(x)
 y=sqrt(x)
 y=atan(x)
 x=x+.01
 22continue
 ztim=(long(362)-ntim)/60.
 write(9,*)y
 write(9,*)ztim
 pause
 end
_________________________________________________________
Listing 1 FORTRAN Source Code of Test Problem

When the FORTRAN test program was run with Version 2.3 of the Absoft FORTRAN compiler on a 16 MHz Mac II, the execution time for the compiled program was 13.5 sec. The sample program was rewritten in ADA and the resultant source code appears in Listing 2.

_________________________________________________________

-- Paul Zarchan’s float test procedure.

with ada_io; use ada_io;
with Mac_Types; use Mac_Types;
with math_lib; use math_lib;
with Events;
procedure pzfloat is
 x :float:=1.0;
 y :float;
 time :float;
 ticks  :longint;
begin
 ticks:=Events.TickCount;
 for i in 1..100000 loop
 y:=sin(x);
 y:=ln(x);
 y:=exp(x);
 y:=sqrt(x);
 y:=atan(x);
 x:=x+0.01;
 end loop;
 ticks:=Events.TickCount-ticks;
 time:=float(ticks)/60.0; --float(ticks) converts to float.
 put(y);
 new_line;
 put(time);
end;
__________________________________________________________
Listing 2 Ada Source Code of Test Problem

The compilation of the Ada source code can either be accomplished by using the MPW language in the Worksheet or directly from the Ada menu. For those readers who do not know MPW, the step by step menu approach for compilation of the source code follows. First we select Ada... from the Meridian Ada menu as shown in Fig. 1.

Figure 1 Step 1 In Ada Compilation Process

Next a dialog box with many Ada Options shows up as shown in Fig. 2. The user must tell the Ada compiler which source code files to use. Therefore the user clicks on the Ada Source Files... button as shown in Fig. 2. For skilled MPW users, the resultant MPW code also appears under the Command Line in the dialog box.

Figure 2 Step 2 In Ada Compilation Process

Next the user must select the source code file (using the .ada convention) to be compiled. After double clicking on the float.ada file in the scroll box, the user clicks on the Done button as shown in Fig. 3.

Figure 3 Step 3 In Ada Compilation Process

Another dialog box appears as shown in Fig. 4. This time the user clicks on the Ada button to begin the compilation process. The compilation process is much slower than other languages which are compiled under the Finder but comparable in speed to languages which are compiled in the MPW environment.

Figure 4 Step 4 In Ada Compilation Process

Finally the user goes back to the Meridian Ada menu and selects the BAMP... menu item as shown in Fig. 5.

Figure 5 Step 5 In Ada Compilation Process

Another dialog box appears as shown in Fig. 6 requesting the user to type in the Main Procedure name. After typing in pzfloat into the appropriate edit field, the user clicks on the Bamp button to complete the compilation process (i.e., code is being assembled and linked).

Figure 6 Step 6 In Ada Compilation Process

Finally, the user is ready to execute the program. This is accomplished by typing pzfloat into the MPW Worksheet and hitting the Enter key. We can see from the Worksheet that the execution time for this sample program is 26.4 sec on the 16 Mhz Mac II. The execution time in Meridian Ada is twice as slow as the program executed in Absoft FORTRAN on the same machine. In both the Ada and FORTRAN cases the 68881 math co-processor was addressed. On some programs (but not this one) dramatic reductions in execution time can be achieved if the option Suppress All Checks is selected (see Fig. 2 for example) which disables the Ada run-time checking.

Figure 7 Answers to Executable Ada Code

It is important to note that the answers are written in the MPW Worksheet. If one wanted to write the answers in a window, the user would have to do extra work.

We intentionally introduced errors into the source code to see how the Ada compiler would respond. Unfortunately in many cases the compiler indicated the offending line number of the source code. In other MPW compilers (Absoft’s MacFortran II for example) one selects the error message in the MPW Worksheet, hits the Enter key and the cursor automatically moves to the offending line in the source code. This feature is very useful for debugging but unfortunately does not exist at this time with the Meridian Ada compiler.

Another Example

In order to demonstrate how to use a main program to call a procedure in a separately compiled package in Ada, let us consider another simple example. Listing 3 presents a main program entitled callit.ada. This program uses a package entitled my_adder

___________________________________________________________
with my_adder;
with ada_io; use ada_io;
procedure callit is

 c :  integer;

begin
 my_adder.add_em_up(1,2,c);
 put(c);
 new_line;
 my_adder.add_em_up(2,3,c);
 put(c);
 new_line;
 my_adder.add_em_up(4,5,c);
 put(c);
 new_line;
end;
___________________________________________________________
Listing 3 Ada Main Program For Second Example

Listing 4 is the package called my_adder. It’s Macintosh file name is my_adder.ada. This package contains a procedure for adding two numbers.

___________________________________________________________
package my_adder is
 procedure add_em_up(a,b : in integer; c : out integer);
end;

package body my_adder is

 procedure add_em_up(a,b : in integer; c : out integer) is

 begin
 c:=a+b;
 end add_em_up;

end my_adder;
___________________________________________________________
Listing 4 Package For Second Example

The mechanics of operating the Ada compiler with this main program and package are quite simple. The compilation steps are identical to those of the previous section except that in Step 3 the two source files callit.ada and my_adder.ada are entered into the Ada Sources scroll field (see Fig. 3). In Step 6 the name entered in the Main Procedure edit field must be callit (see Fig. 6). When compilation is complete, the user types callit into the Worksheet in order to run the program.

For Ada Mavens

The Ada cognoscenti will find that implementation-dependent characteristics of the Meridian compiler are quite reasonable. All pre-defined pragmas (Ada compiler directives) are implemented with the exception of controlled, optimize, system_name, shared, storage_unit, and memory_size. These pragmas are accepted but ignored. The pragma interface (which is used to allow calls to routines written in other languages) supports C and Assembly; the programmer is responsible for insuring the correct calling conventions. Restrictions on representation clauses are few, and result mainly from the architecture of the Motorola 68000 family. Address clauses are supported for objects, but not for packages, subprograms, or task units. An address clause may be used with a task entry to support interrupts, but presently this is only recognized for the command-period keyboard interrupt.

Machine code insertions are supported, but only minimally. To insert machine code it is necessary to have the code already assembled into hexadecimal values. For instance, if you wish to insert the machine code corresponding to

 MOVEM.L D2-D7/A2-A4,-(A7)

you would have to insert the following lines into your procedure using machine code:

 instruction’(val => 16#48E7#);
 instruction’(val => 16#3F38#);

While this makes machine code insertions possible, it is probably easier to just use pragma interface with assembly code.

The standard packages calendar, direct_io, io_exceptions, sequential_io, standard, and text_io are all supported, as well as the generics unchecked_conversion and unchecked_deallocation. Further, Meridian has made the use of text_io easier for the Ada novice by providing the package ada_io to simplify input and output.

A few handy utility library packages come with the Ada compiler. The package arg lets you get at MPW command line arguments; bit_ops provides in-line bit operations; math_lib implements a few of the more common transcendental functions; spio flushes output text files; spy implements the byte peek and poke operations; and finally, text_handler is a text handling facility like the one described in section 7.6 of the Ada LRM (Language Reference Manual).

Meridian provides a source-level debugger with the compiler that supports all the normal debugger commands that you would expect: breakpoints, single-stepping, tracing, variable monitoring, etc. To be used, the debugger must be linked with the program to be debugged. This is somewhat intrusive, and will definitely increase the size and slow down the execution speed of any program with which it is used. Note also that any program which used the debugger would have to be recompiled and relinked after debugging to remove the debugger code. On the up side, however, a lot of power has been built into the debugger, and if the recompilation and relinking isn’t a problem, then the Meridian debugger should be a real help with finding and correcting problems.

A library has also been provided to support the interface to the Macintosh toolbox. If you are a frequent user of the the toolbox, you will probably want to install this library and make it a normal component of any Ada library you make. You should be careful about how you do this, as the instructions in the manual are not entirely clear. The use of the Macintosh environment library is mostly straightforward, but there are a few differences from the normal Pascal toolbox calls (as presented in Inside Macintosh), which are clearly explained in the manual.

Summary

Although we don’t recommend that Macintosh programmers switch to Ada in order to create their next commercial application, we do recommend that this implementation of Ada be considered for those who either like Ada or are required to use it and enjoy the Macintosh platform. Check with

Meridian Software Systems, Inc.

10 Pasteur Street

Irvine, CA 92718

Phone: 800/221-2522

for current pricing.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Pocket Arcade Story (Games)
Pocket Arcade Story 1.00 Device: iOS Universal Category: Games Price: $4.99, Version: 1.00 (iTunes) Description: Here comes a new challenger: it's the arcade simulation game you've been waiting for! Build your very own gaming... | Read more »
How to get coins faster in Rodeo Stamped...
There comes a time in a cowboy or cowgirl's life when all the riding and lassoing skills in the world aren't enough. You're going to need some cold, hard cash to keep your sky zoo expanding in Rodeo Stampede. [Read more] | Read more »
How to out-do Cam Newton in Can You Dab?
The thing about dance crazes is that you're never really sure when they've run their course. Take the Dab, for instance. Propelled by its adoption as the touchdown celebration of choice for Carolina Panthers quarterback Cam Newton, the Dab seemed... | Read more »
Artik Games releases Splashy Cats for An...
Splashy Cats had us hooked from the title alone, and when we found out the game was literally just zig-zagging one of our favourite pop-culture references, guised as a playable cat character, down a river – our appetites were whetted to say the... | Read more »
Battle Cars (Games)
Battle Cars 1.1 Device: iOS Universal Category: Games Price: $1.99, Version: 1.1 (iTunes) Description: Welcome to the world of Battle Cars. Battle Cars is a classic arcade top-down racing game with fast mini cars and funny weapons to... | Read more »
How to get started with live.ly
One could be forgiven for thinking that there are already plenty of streaming video apps out there. It's just that the App Store charts would insist that you're mistaken. [Read more] | Read more »
Rodeo Stampede: Guide to all Savannah an...
A "gotta catch 'em all" joke seems appropriate here, even though we're talking animals in Rodeo Stampede and not pocket monsters. By now you've probably had plenty of rides, tamed some animals and built yourself a pretty nice zoo | Read more »
Is there cross-platform play in slither....
So you've sunken plenty of hours into crawling around in slither.io on your iPhone or iPad. You've got your stories of tragedy and triumph, the times you coiled four snakes at one time balanced out by the others when you had a length of more than... | Read more »
Rodeo Stampede guide to running a better...
In Rodeo Stampede, honing your skills so you can jump from animal to animal and outrun the herd as long as possible is only half the fun. Once you've tamed a few animals, you can bring them home with you. [Read more] | Read more »
VoxSyn (Music)
VoxSyn 1.0 Device: iOS Universal Category: Music Price: $6.99, Version: 1.0 (iTunes) Description: VoxSyn turns your voice into the most flexible vocal sound generator ever. Instantly following even subtle modulations of pitch and... | Read more »

Price Scanner via MacPrices.net

Why Use Indie Opera And Vivaldi Instead Of Sa...
For many years my web browser workhorses were various permutations and spinoffs of the Netscape/Mozilla/Firefox Open Source platform, and the Norwegian indie browser Opera, which I took a shine to... Read more
Western Digital Launches Worlds Fastest 256GB...
At the Mobile World Congress in Shanghai Western Digital Corporation this week introduced a new suite of 256 gigabyte (GB) microSD cards, which includes the new 256GB SanDisk Extreme microSDXC UHS-I... Read more
KeyCue 8.1 Integrates With Typinator To Displ...
Ergonis Software has released KeyCue 8.1, a new version of the company’s keyboard shortcut cheat sheet. KeyCue 8 introduced a new way to define a wide variety of triggers, which can be used to... Read more
Save up to $600 with Apple refurbished Mac Pr...
Apple has Certified Refurbished Mac Pros available for up to $600 off the cost of new models. An Apple one-year warranty is included with each Mac Pro, and shipping is free. The following... Read more
21-inch 2.8GHz iMac on sale for $1199, save $...
Amazon has the 21″ 2.8GHz iMac (model #MK442LL/A) on sale for $1199.99 including free shipping. Their price is $100 off MSRP, and it’s the lowest price available for this model. Read more
13-inch 2.5GHz MacBook Pro (Apple refurbished...
Apple has Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.5GHz MacBook Pros... Read more
MacBook Airs on sale for up to $50-$100 off M...
B&H Photo has 13″ and 11″ MacBook Airs on sale for up to $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 11″ 1.6GHz/128GB MacBook Air: $849 $50 off list price - 11″ 1.... Read more
Brexit Vote Result Forecast To Slash UK 2016...
Uncertainty and economic volatility can be expected to increase over the next nine months, as the Brexit and concerns over the future of the EU hit IT investment, say Canalys market analysts, with... Read more
13-inch 256GB MacBook Air on sale for $1149,...
Amazon has the 2016 13″ 1.6GHz/256GB MacBook Air (model MMGG2LL/A) on sale for $1149.99 including free shipping. Their price is also $50 off MSRP. Read more
Haven App Launches New Age Of Wirless 911 Eme...
Haven from RapidSOS represents a transformation in access to emergency services from a phone call solely dependent on voice to a robust data connection for voice, text, medical/demographic data.... Read more

Jobs Board

*Apple* iPhone 6s and New Products Tester Ne...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
*Apple* iPhone 6s and New Products Tester Ne...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
*Apple* Retail - Multiple Positions, Willow...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* iPhone 6s and New Products Tester Ne...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
*Apple* iPhone 6s and New Products Tester Ne...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.