Introduction

This document is written and intended for A-Shell developers seeking to take advantage of A-Shell capabilities to create or enhance existing applications. Most of the topics in this document are what we call A-Shell "extensions," which are capabilities or functions or processes that "extend" A-Shell beyond its original AMOS roots. Although using these extensions may increase the difficulty of maintaining backward-AMOS compatibility, there are at least three reasons why you might want to do so anyway.

• Some of A-Shell’s extensions, such as the expanding library of subroutines written in BASIC, provide you the tools to be more productive as a programmer.

• Some extensions, like memory mapping, may help you significantly improve your application’s performance.

• Probably the most powerful reason is that once applications have been moved to the Windows or UNIX/Linux environments, they will start to encounter users who don’t know AMOS, but who expect certain things out of applications that were not commonly available under AMOS. This is especially true under Windows, where users expect applications to support the mouse, graphics, GDI printing, message boxes, etc., but is also true under UNIX/Linux where applications are expected to be able to handle signals, spawn background tasks, interface with the web and other services using socket-based protocols or FIFOs, understand native directories, etc.

To accommodate these needs and interests, A-Shell has built up a variety of tools and other capabilities over the years, and the list is constantly growing. Many of A-Shell's expanded capabilities are in the form of subroutines (XCALLs) or system configuration parameters, which are documented in the A-Shell XCALL Reference and A-Shell Setup Guide. The information in this guide overlaps those documents, and frequently references them, but is organized differently and presented with an emphasis on discussion and examples.

There is no perfect way to organize these topics, and it is doubtful that you would want to read it from cover to cover, so you may need to rely on a combination of the table of contents, the index, and general browsing to find what you are looking for. Rev A of this document divided topics into those that were Windows-specific and those that were not, which at first seemed to simplify things. But we decided to abandon that strategy because the increasing heterogeneity and complexity of modern computing environments, plus the increasing number of cross-platform integration tools, is making it increasingly difficult to determine which topics apply only to Windows or only to UNIX. We did retain a section titled GUI enhancements, which is tends to emphasize Windows-oriented topics, but it is not the case that all of the Windows-related topics are also GUI-related, nor vice versa. (In particular, note that many Windows-specific functions can be made available to A-Shell/UNIX via AshLite or a terminal emulator which supports host-driven operations.) So as you browse through the topics, pay attention to the comments associated with that topic to determine the applicability of the topic to your chosen platform.