Short: Motorola 680x0-series Prof. Macro Assembler Author: dweber@amiga.icu.net.ch Type: dev/asm Architecture: m68k-amigaos Welcome to the shareware release of ProAsm 1.74 ProAsm Copyright © 1989-1996 by Daniel Weber ProAsm is Shareware 1.74 Release Notes: ProAsm(TM) Software These notes address the following topics: - The ProAsm Assembler - ASX - The ProAsm User Interface - ProOpts - The ProAsm Configuration Program - Support Libraries - ProAsm Software Overview - Documentation - Author The ProAsm Assembler -------------------- The ProAsm assembler is a traditional two pass assembler that emits code for the entire Motorola MC68000 Family. ProAsm is a high performance, full-featured assembler with enough powerful features to make it appropriate for all assembly tasks. It produces native 68xxx code, and has special directives to enable the selection of the target processor and the appropriate code optimization for that processor. ProAsm supports both addressing mode syntaxes as defined by Motorola. Programmers find these capabilities of the new syntax mode particularly useful for handling advanced data structures common to sophisticated application and high level languages. The output produced by ProAsm is either an executable file that can directly be run under AmigaDOS or the Workbench, object modules that are compatible with the Amiga standard linker and BLINK (the replacement linker from 'The Software Distillery'), binary output for ROM-able code (for example), pre-assembled files, or the Motorola S-record format. Besides the normal output files, ProAsm can also generate four types of auxiliary output files which reflect the results of the assembly process: the error file and the equate file, the source listing and the cross-reference listing. ProAsm has a tremendous number of switchable optimizations including the multipass facility to gain an even more optimized code. ProAsm also has a very rich set of directives including a wide range of synonyms that allow source code written for other assemblers (Public Domain software for example) and the Commodore include files to be assembled. Included as well are directives to deal with structures, repeat loops and similar code elements very easily. Powerful macros with unlimited macro arguments and many macro directives are available to permit code to be easily and clearly arranged. The rich set of available facilities allows exact control over the performance of the assembler. This control includes features such as optimization, case dependency for symbols, syntax control, and the default behaviour of ProAsm to name a few. More advanced control features such as precise code control and selectable symbol search algorithm are also included. A valuable feature of ProAsm is the configuration file, which is automatically included in each assembly. You can customize ProAsm to suit your particular wishes by including commonly used macros, code and directives in the configuration file. No program can be all things to all people. So all assemblers have limitations - ProAsm tries to put them as far as possible not to narrow your creativity. This results in the fact that the most limitations are just limited only by available memory (line length, macro body, macro nesting, macro arguments, nesting of macro directives, repeat and include file nesting,...). This makes ProAsm an ideal assembler for the professional developer, the high-level language programmer (such as C, Modula,...) who want to integrate some assembly language code into his programs, and the beginner at assembly language programming. Some Features ............. - Completely written in carefully hand-coded assembly language for maximum speed. - Supports the entire Motorola M68000 Family: MC68000, MC68008, MC68010, MC68020, MC68030, MC68040, MC68060, MC68EC020, MC68EC030 processors, and the MC68881, MC68882, MC68851 coprocessors. - Both addressing mode syntax supported as defined by Motorola for the M68000 Family. (The syntax modes can individually be controlled by using the NEWSYNTAX, OLDSYNTAX and RELAX directives.) - Five different output file formats: executable, linkable, binary, preasm (pre-assembled symbol tables and macros), and the Motorola S-record format. - Produces Amiga standard object files compatible with the Amiga standard linker and BLINK (the replacement linker from 'The Software Distillery'). - Rich set of optimization possibilities. - Multipass optimization to gain more compact code. - Powerful macros (and many macro directives). (Unlimited number of macro arguments and nesting - limited only by available memory) - Configuration file supported to customize ProAsm. - Convenience Pseudo-Opcodes: MEA, POP, PUSH, POPM, PUSHM, APOPM, APUSHM. - Special directives to allow powerful string-handling. - Support of text substitution using textual symbols. - Include files supported (unlimited nesting of include files - limited only by available memory). - Conditional assembly (conditional nesting up to 231 levels possible). - Directives to declare initialized data with restricted range - Directives to define C-type, BCPL, and OS9-type strings. - Supports symbol segmentation. - Special directives to change the default behaviour of ProAsm. - Structure offset directives allow the declaration of structures easily. - Frame offset directives to define stack frame data structures. - Repeat loop directives to allow text repetition (unlimited repeat nesting - limited only by available memory). - Up to 256 different hunks (code, data, and bss). - Support of debug information for the executable and linkable output. ProAsm generates either a standard or compressed debug hunk format that is compatible with the SAS/C. - A directive to attach an AmigaDOS comment to the output file. - A directive to set the AmigaDOS file protection flags to the output file. - Four auxiliary output files can be generated: the listing file, error file, equate file, and the cross-reference listing. - ProAsm allows the inclusion of binary images. - The assembly task priority can be set from within the source file. - ProAsm is entirely re-entrant, and can be made resident. - A rich set of directives and options to control the assemblers behaviour and to ease programming. - The standard directives are compatible with the most popular assemblers. - Many useful build-in symbols to make programming easier. - Comfortable support of relative bases. - XPK library system supported. - Directives to control the report of information timing. - Four selectable symbol search algorithm. - (OSV37 & OSV39 and higher hunks supported) - Six types of constants provided: decimal, hexadecimal, binary, octal, floating point, and string. - ProAsm (optionally) supports localization for the AmigaOS V38 and higher. (German error texts included to the software package). System Requirements ................... - Amiga with at least 512KByte of memory needed. - Workbench and Kickstart 1.2 or higher required. - Fully compatible with the entire Amiga family. ASX - The ProAsm User Interface ------------------------------- ASX is a user interface for the ProAsm assembler that is implemented as a commodity. Through the use of the commodities.library it can be installed on any hotkey and fully controlled with the Commodities Exchange program. ASX loads the ProAsm assembler which than can be accessed using the ARexx interface, the asx.library, or the AppIcon possibility. The asx.library and the AppIcon can optionally be enabled or disabled. The ARexx commands provide a method of controlling ASX from an external program. These ARexx commands can be used to create an integrated programming/development environment with any application that offers an ARexx interface. For example, a program can be written by a programmer on its favourite ARexx equipped texteditor, then an ARexx command can be sent to ASX to assemble the source code. Any error messages and warnings of the assembly are stored by ASX, and using commands such as NEXTERROR and PREVERROR the texteditor is capable to position the cursor in the line of the first error. After correcting that error a single keystroke can jump to the next error, or another keystroke can jump back to the previous error. Another method of controlling ASX is the use of the optional asx.library. The various functions that this library offers can be used to design own user interfaces with ease. The AppIcon possibility is another visual user interface that allows one or more source file icons to be assembled by just dropping them over the ASX appicon. Frequently used include files can be loaded residently and managed by ASX. Such residently loaded include files reduce assembly time since they do not need to be loaded each time the assembler is called. Preferred include file paths can be added to a database that is managed by ASX. During assembly the assembler uses then this database to know where to look for the include files. ASX also provides a feature called the source manager, which offers a possibility to manage the current project per hotkey. Through the use of an ARexx script file the user can easily define the action that has to be fulfilled when an entry in the source manager window had been selected. Almost all shooting matches of the source manager can be set by the user to his wishes and needs to allow a wide range of flexibility. For an easy use of ASX, it comes along with an on-line help feature. Commodore's AmigaGuide is used to display the help text to the user. Some Features ............. - Hotkeys to control ASX. - 53 ARexx commands that permits external programs to control ASX. - 13 asx.library functions. - Workbench 2.0's appicon feature supported. - Source manager to manage projects and source codes by a single hotkey. - Supports residently loaded include files to reduce assembly speed. - Include file paths can be stored in a database to let the assembler know where to look for the include files. - Context-sensitive on-line help using Commodore's AmigaGuide. - Settings can be saved and loaded. - Full intuition/gadtools user interface to allow all changes to be done using the mouse. - Font-sensitive user interface. System Requirements ................... - Amiga with at least 512KByte of memory needed. - Workbench and Kickstart 2.04 or higher required. - Fully compatible with the entire Amiga family. ProOpts - The ProAsm Configuration Program ------------------------------------------ ProOpts provides a simple method of generating or changing a configuration file for the ProAsm assembler. Since ProAsm supports configuration files to be loaded each time when it is called, the user is able to customize ProAsm to suit his particular wishes and needs. The options for a project can be set by clicking on the gadget that corresponds to the option. Even options for which the ProOpts utility does not have a gadget can be specified by a special string and listview gadget. The generated configuration file is an ASCII file that contains the specified options as assembly directives. It is similar to an include file except that it is loaded at the very beginning of each assembly. There is no restriction on the use of as- sembler directives or even code in the configuration file. The user can also re-edit or add options using a texteditor. Previously generated config files can be loaded into ProOpts and then be changed to the new option settings. Some Features ............. - Configuration can be changed by using the mouse. - Generates an assembly language source file. - Supports options that have no specific gadget. - Menu item to reset all options to their default. - Full intuition/gadtools user interface to allow all changes to be done using the mouse. - Font-sensitive user interface. System Requirements ................... - Amiga with at least 512KByte of memory needed. - Workbench and Kickstart 2.04 or higher required. - Fully compatible with the entire Amiga family. Support Libraries ----------------- The support libraries are not required by ProAsm or by any of its associated utilities. They can optionally be installed to increase selectively the power and flexibility of ProAsm. - proasmlang.library - ProAsm localization support library for OS V38 and higher. - proasmoptim.library - Library to enlarge ProAsm's optimization dictionary to recognize more possible optimizations. - proasmfp.library - Library to boost ProAsm's floating-point support. Please note that the last two libraries are currently not included to the archive. ProAsm Software Overview ------------------------ Listed and described below is the software provided in this release. Programs ........ - Pre2Src - Converts pre-assembled files into readable source code. - ProHunk - 680x0/688xx Hunk Analyser. - Profiler - Small run-time statistics utility. - MMUInfo - MMU information utility. - StripD - Strips debugging symbols/information from an object file. - CLICalc - CLI calculator. - FCalc - CLI IEEE double precision calculator. - FCmp - File compare utility. - Bin2DC - Converts binary data files into assembler source using the DC.x directive. - FD2LVO - Converts fd files to _LVO equate files. - BDiff - Small binary file compare program. - UnBDiff - Small binary un-diff. - Blink - Replacement linker from 'The Software Distillery'. Source Codes ............ - Pro68 - Shell-ASX Interface - crypt - Small encryption program - perfmon - Performance monitor - cxchange - Controls system commodities - ... Routines -------- Routine files are a library of useful routines that provide a simple and time saving method for assembly programming. Special macros have been designed that ensure that only the called routines get assembled. This makes the routine files a good foundation for assembly programming. - alert.r - Alert support routines. - amigaguide.r - AmigaGuide support routines. - amigaguideasync.r - Asynchroneous AmigaGuide support. - AppIcon.r - Routines for Workbench 2.0's appicon support. - ARexx.r - For ARexx support. - ASLSupport.r - For support of the ASL file requester. - basicmac.r - Macros for selective routines assembly. - commodity.r - Contains routines for commodity support. - configfile.r - Configuration file support routines. - conio.r - Routines for console window input/output. - conoc.r - Single console window open/close routines. - conread.r - Read routines for the console window. - conreadpkt.r - Read routines for the console window using packets. - CRC16.r - Routines to calculate an Ansi CRC16 checksum. - DiskObjectSupport.r - DiskObject support routines. - dosfile.r - Contains DOS file handling routines. - doslib.r - DOS library open and close routines. - easylibrary.r - Routines to open and close libraries simple. - extmsg.r - External message support routines. - GadgetGroupSupport.r - GadgetGroup support routines for use with GTFace. - graphicslib.r - Graphics library open and close routines. - gtface.r - Window handling and gadtools interface routines. - gtfdefs.r - Definitions for GTFace. - gtfguido.r - GUI macros for GTFace. - gtfmacros.r - Macros for GTFace (gadgets and menus). - gtfsupport.r - Various GTFace support routines. - gtfsupport_reb.r - More GTFace support routines - gtfxdefs.r - External definitions for GTFace. - intuitionlib.r - Intuition open and close routines. - IntuitionSupport.r - Routines for the intuition BusyPointer. - locale.r - Support routines for locale (locale.library). - locks.r - Routines for locks, files, and directories. - memory.r - Memory handling routines. - numbers.r - Various routines for number conversion. - numbers.mac - String to number macros. - packets.r - DOS packet handling routines. - paraliner.r - UNIX like parameter line parser. - parse.r - Routines for text parsing. - patch.r - Library function patch routines. - ports.r - Contains ports, signal, and message handling routines. - progressbars.r - Routines to handle progress bars easily. - qsort.r - Quicksort sorting algorithm. - readargs.r - Interface routines to ReadArgs(). - readrexx.r - Routines for a passive ARexx port. - requester.r - ASL and REQ file requester routine. - reset.r - Software reboot routine. - script.r - Routines to deal with batches. - scrollbars.r - GTFace appendum for horiz./vert. scrollbars. - shortcut.r - Routine to wait for a shortcut. - startup4.r - Enhanced CLI and Workbench startup code (with detach). - string.r - String support routines. - stringmacros.r - String support macros. - structs.r - Macros for various structures. - support.mac - Support macros. - tasks.r - Some little routines for tasks. - tasktricks.r - More routines for tasks. - tooltypes.r - Routines to get ToolTypes from a Workbench started program. - ToolTypeSupport.r - ToolType support routines. - TypeOfProcessor.r - Contains routine to determine installed processor and coprocessors. Documentation ------------- You find the complete online documentation in the Help/ and the Help/english/ directory of this distribution. A printed version of the manual with about 320 pages will be available as soon as possible. Read the registration.doc or the registration part in the pro.guide file for further information about registration and the shareware limitation. Author ------ If you have bugreports, questions, ideas, flames or complaints (constructive criticism is always welcome), or if you just want to contact me, write or send a letter to: Daniel Weber Internet: dweber@amiga.icu.net.ch (preferred) dweber@iiic.ethz.ch Mail: Daniel Weber Hoeflistrasse 32 CH-8135 Langnau Switzerland.