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

DiskCatalogMaker 6.6 - Catalog your disk...
DiskCatalogMaker is a simple disk management tool which catalogs disks. Simple, light-weight, and fast Finder-like intuitive look and feel Super-fast search algorithm Can compress catalog data for... Read more
RapidWeaver 7.3 - Create template-based...
RapidWeaver is a next-generation Web design application to help you easily create professional-looking Web sites in minutes. No knowledge of complex code is required, RapidWeaver will take care of... Read more
iFFmpeg 6.2.6 - Convert multimedia files...
iFFmpeg is a comprehensive media tool to convert movie, audio and media files between formats. The FFmpeg command line instructions can be very hard to master/understand, so iFFmpeg does all the hard... Read more
Amazon Chime 4.0.5540 - Amazon-based com...
Amazon Chime is a communications service that transforms online meetings with a secure, easy-to-use application that you can trust. Amazon Chime works seamlessly across your devices so that you can... Read more
OnyX 3.2.4 - Maintenance and optimizatio...
OnyX is a multifunction utility that you can use to verify the startup disk and the structure of its system files, to run miscellaneous maintenance and cleaning tasks, to configure parameters in the... Read more
Opera 43.0.2442.991 - High-performance W...
Opera is a fast and secure browser trusted by millions of users. With the intuitive interface, Speed Dial and visual bookmarks for organizing favorite sites, news feature with fresh, relevant content... Read more
VueScan 9.5.71 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
SpamSieve 2.9.28 - Robust spam filter fo...
SpamSieve is a robust spam filter for major email clients that uses powerful Bayesian spam filtering. SpamSieve understands what your spam looks like in order to block it all, but also learns what... Read more
GarageSale 7.0.7 - Create outstanding eB...
GarageSale is a slick, full-featured client application for the eBay online auction system. Create and manage your auctions with ease. With GarageSale, you can create, edit, track, and manage... Read more
Thunderbird 45.7.1 - Email client from M...
As of July 2012, Thunderbird has transitioned to a new governance model, with new features being developed by the broader free software and open source community, and security fixes and improvements... Read more

Last week on Pocket Gamer
If you’re wondering what’s going on in the wider world of portable gaming, our sister site PocketGamer has you covered. Each week we like to check in on the PG team and see what they’ve been preoccupied with. From the latest on the Nintendo Switch... | Read more »
Mudd Masher arrives this week
Atooi Games, the minds behind Totes the Goat and Mutant Mudds, have a new game in the works -- Mudd Masher. The game, a hybrid of the independent studio's first two titles, is expected to launch this week on March 2. [Read more] | Read more »
The best sales on the App Store this wee...
The App Store has quite an exciting lineup of discount games this week that range across a variety of genres. It's a great opportunity to catch up on some of the premium games you may have been holding off on -- and some you can even grab for free... | Read more »
The best new games we played this week
Ah, here we are again at the close of another busy week. Don't rest too easy, though. We had a lot of great new releases in mobile games this week, and now you're going to have to spend all weekend playing them. That shouldn't be too much of a... | Read more »
Rollercoaster Tycoon Touch Guide: How to...
| Read more »
Rabbids Crazy Rush Guide: How to unlock...
The Rabbids are back in a new endless running adventure, Rabbids Crazy Rush. It's more ridiculous cartoon craziness as you help the little furballs gather enough fuel (soda) to get to the moon. Sure, it's a silly idea, but everyone has dreams --... | Read more »
Tavern Guardians (Games)
Tavern Guardians 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Tavern Guardians is a Hack-and-Slash action game played in the style of a match-three. You can experience high pace action... | Read more »
Slay your way to glory in idle RPG Endle...
It’s a golden age for idle games on the mobile market, and those addictive little clickers have a new best friend. South Korean developer Ekkorr released Endless Frontier last year, and players have been idling away the hours in the company of its... | Read more »
Tiny Striker: World Football Guide - How...
| Read more »
Good news everyone! Futurama: Worlds of...
Futurama is finding a new home on mobile in TinyCo and Fox Interactive's new game, Futurama: Worlds of Tomorrow. They're really doing it up, bringing on board Futurama creator Matt Groening along with the original cast and writers. TinyCo wants... | Read more »

Price Scanner via MacPrices.net

12-inch 1.1GHz Retina MacBooks on sale for $1...
B&H has 12″ 1.1GHz Retina MacBooks on sale for $150 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 12″ 1.1GHz Space Gray Retina MacBook: $1149 $150 off MSRP - 12″ 1.1GHz... 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
13-inch 2.7GHz Retina MacBook Pro on sale for...
B&H Photo has the 2015 13″ 2.7GHz/128GB Retina Apple MacBook Pro on sale for $150 off MSRP. Shipping is free, and B&H charges NY tax only: - 13″ 2.7GHz/128GB Retina MacBook Pro (MF839LL/A): $... Read more
13-inch 1.6GHz/256GB MacBook Air on sale for...
Newegg has the 13″ 1.6GHz/256GB MacBook Air (MMGG2LL/A) on sale for $1029.99 including free shipping. Their price is $170 off MSRP, and it’s the lowest price available for this model. Choose Newegg... Read more
Apple refurbished Apple TVs available for up...
Apple has Certified Refurbished 32GB and 64GB Apple TVs available for up to $30 off the cost of new models. Apple’s standard one-year warranty is included with each model, and shipping is free: -... Read more
27-inch 3.3GHz 5K iMac on sale for $2099, sav...
B&H Photo has the 27″ 3.3GHz 5K Apple iMac on sale for $2099.99 including free shipping plus NY sales tax only. Their price is $200 off MSRP. Amazon also has the 27″ 3.3GHz 5K iMac on sale for $... Read more
21-inch iMacs on sale for up to $111 off MSRP
B&H Photo has select 21″ Apple iMacs on sale for up to $110 off MSRP, each including free shipping plus NY sales tax only: - 21″ 2.8GHz iMac: $1189 $110 off MSRP - 21″ 1.6GHz iMac: $999 $100 off... Read more
12-inch 1.2GHz Retina MacBooks on sale for $2...
Newegg has the 12″ 1.2GHz Space Gray Retina MacBook (sku MLH82LL/A) on sale for $1349.99 including free shipping. Their price is $250 off MSRP, and it’s the lowest price available for this model.... Read more
13-inch MacBook Airs on sale for $100 off MSR...
B&H Photo has 13″ MacBook Airs on sale for $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 1.6GHz/128GB MacBook Air (MMGF2LL/A): $899 $100 off MSRP - 13″ 1.6GHz/... Read more
9-inch 32GB Silver iPad Pro on sale for $549,...
B&H Photo has the 9.7″ 32GB Silver Apple iPad Pro on sale for $549 for a limited time. Shipping is free, and B&H charges NY sales tax only. Their price is $50 off standard MSRP for this model... Read more

Jobs Board

*Apple* Solutions Consultant - Apple (United...
# Apple Solutions Consultant Job Number: 55676865 Los Angeles, California, United States Posted: Feb. 22, 2017 Weekly Hours: 40.00 **Job Summary** As an Apple Read more
Programmer/Editor *Apple* Music Dance - App...
# Programmer/Editor Apple Music Dance Job Number: 55565967 Culver City, California, United States Posted: Feb. 23, 2017 Weekly Hours: **Job Summary** Apple Music Read more
Digital Marketing Specialist - *Apple* iClo...
# Digital Marketing Specialist - Apple iCloud Job Number: 54729233 Culver City, California, United States Posted: Feb. 22, 2017 Weekly Hours: 40.00 **Job Summary** Read more
Marketing Specialist, iTunes & *Apple*...
# Marketing Specialist, iTunes & Apple Music Job Number: 55704205 Culver City, California, United States Posted: Feb. 23, 2017 Weekly Hours: 40.00 **Job Summary** Read more
*Apple* Wireless Lead - T-ROC - The Retail O...
…of knowledge in wireless sales and activations to the Beautiful and NEW APPLE Experiencestore within MACYS. THIS role, APPLE Wireless Lead, isbrandnewas MACYS Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.