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.92




                                  ProAsm
                   Copyright © 1989-1997 by Daniel Weber
                            ProAsm is Shareware





1.92 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 version 1.92 release of the ProAsm Developement Package removes all
** bugs found in the last release.
**




                           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 is available in form
of a postscript document that is distributed as a second archive that comes
along with the ProAsm distribution (proasm192_man.lha)


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.