home *** CD-ROM | disk | FTP | other *** search
- IMPORTANT NOTICE:
-
- Since AssemPro has been updated, we have to make a few
- additions on this diskette file.
-
- 1) Since the program turned out to be longer than anticipated, and
- a number of programs were added, the diskette is pretty full of data.
- Before you start working with AssemPro, you should format a data diskette,
- and copy the TOS and DEMO folders to it. Then you'll have enough room to
- save programs to be assembled. Remember to have the AssemPro original
- diskette in drive A.
-
- 2) For reasons of versatility, and because of memory needs, AssemPro
- requires one of the following hardware configurations:
-
- - Atari 260 ST with TOS in ROM
- - Atari 520 ST with TOS in ROM
- - Atari 260 ST expanded to 1Meg with TOS in ROM or on disk
- - Atari 520 ST expanded to 1Meg with TOS in ROM or on disk
- - Atari 520 ST+ with TOS in ROM or on disk
- - Atari 520 ST/M with TOS in ROM or on disk
- - Atari 1040 ST with TOS in ROM or on disk
-
- 3) When you want to delete a file, choose and delete your file from the
- file selector box; you can continue deleting files from that box, until
- you click CANCEL.
-
- 4) The following operations have been added to AssemPro:
-
- a<<b : Shift a (binary) b bits to the left. This is the equivalent of
- a*2^b.
- a>>b : Shift a (binary) b bits to the right. This is the equivalent of
- ABS(a/2^b)
- ?a : Determine the number of most significnt bits from a. This cor-
- responds to the logarithm of base 2 from a.
-
- These three new operations work with integers (no leading characters).
- Examples:
-
- 1<<3 = 8
- 1024>>5 = 32
- ?8 = 3
- ?1024 = 10
- ?32 = 5
- %1011<<3 = %1011000
- %1010>>3 = %1
- ?%1010 = 3
- ?(1<<a) = a
-
- 5) Changes to the assembler:
-
- Local variables are valid only when between two global variables, as
- already described in the manual. These are undefined above and below.
-
- Redefinable global variables do not influence the valid range of local
- variables, however, when you've already defined them!
-
- So, the following program is correct:
-
- REDEFINABLE@ = 0
-
- GLOBAL_1:
- \LOCAL_1 = 27
- REDEFINABLE@ = \LOCAL_1
- \LOCAL_2 = 1 << \LOCAL_1
- GLOBAL_2:
-
- Symbols will be replaced by the assembler as strings, e.g.:
-
- SYMBOL EQU BlahBlahBlah
-
- From the line SYMBOL, the assembler creates BlahBlahBlah.
-
- However, this does not apply to the symbol definition, which
- can't make much sense of this. So, the assembler replaces the line
-
- SYMBOL EQU BlahBlahBlah
-
- with the variable SYMBOL, but it doesn't read BlahBlahBlah, and signals
- an error.
-
- When the occasion arises that a symbol which stands in the first column
- of a line needs replacement, then you can write a $ character in front
- of the symbol. For example:
-
- DEFINE:MACRO $\1,$\2 ;<= These $'s signal the system to handle the
- ; \1 and \2 as symbols.
- $\1=\2 ;<= \1 should be replaced
- ENDM
-
- DEFINE CONSTANT,7
-
- Will put CONSTANT=7 in from the assembler.
-
- These special examples don't make much sense as they stand.
- There are, however, a number of complex applications where you can
- use this, such as in converting C structures to assembler format.
-
- 6) Additional assembler commands:
-
- IFD variable
-
- Tests for whether a variable has been defined, and operates like a
- normal IF command. Variables should not be handled as symbols, that is,
- when they've been defined, and replaced as the respective character strings,
- and the assembler eventually goes to error checking.
-
- IFND variable
-
- This is the opposite of IFD. This variable test for whether the variable
- has NOT been defined. Here the same restrictions apply as for IFD. Both
- commands can be given as an arithmetic expression. It can then test
- whether all variables are defined or not.
-
- It is difficult when the variable is only undefined during pass 1. It will
- then only assemble program sections bracketed by IFND-ELSE or ELSE-ENDIF on
- pass 1. This is only allowed when this program section only contains
- variable definitions and no 68000 commands. So, variable definitions
- should give no forward references:
-
- IFND FLAG
-
- FLAG=1
- M:MACRO
- ;
- ENDM
- K1=15
- K2=LABEL ;<<<<<<<<< K2 contains the value 0, since the label has not
- ;yet been defined during pass 1.
- ENDIF
-
- \1=0 ;Here we have a problem....
-
- LABEL:
-
- You must define them with local variables directly following the ENDIF.
- These belong namely to the last global variables defined. During pass 1
- it is the constant K2, but on pass 2 it is the last global variable.
- The result: The assembler doesn't find \1 during pass 2.
-
- 8) When in the editor, the cursor moves the next tab to the left (!) when
- you press <Shift> and <Tab>.
-
- 9) Additions to the debugger:
-
- When you click "Execute program" in the debugger, you can state an option
- of whether the program just loads, just starts, or loads AND starts. When
- you want to debug a program, do the following:
-
- - Load the program with load only.
- - Insert breakpoints, or whatever you prefer to do, to get the program
- back to the debugger
- - Now call the "Execute program" call, and start the program. This is
- necessary for initialization, without crashing the loaded program.
- Always start from the beginning of the program. Now you don't need to
- select the filename anymore.
-
- When you want to get the program running again after returning to the
- debugger, either click the "Program start" field, or press <Control><S>.
-
- 10) Here is some advice for all of you who want to single-step through
- the operating system:
-
- When you use the mouse and not the keyboard to control the debugger, the
- problems described in the manual do not occur. These parameters aren't
- spot-checked by GEMDOS, XBIOS or BIOS routines. Examine the KBSHIFT
- function for a demonstration.
-
- 11) Some other improvements worth mentioning:
-
- When you execute a double-click on the debugger field "From address",
- you get the beginning of the program found in memory, and the
- starting address given in the Info line.
-
- Besides that, when you single-click "From address", the following appears:
-
- *=$__________
-
- 12) Furthermore, we should mention some other items not made clear
- in the manual.
-
- When you wish to assemble programs from magazines or books, you must have
- the relocatable option on, otherwise the assembler will signal errors
- where none exist.
-
- This is allowable only with relocatable programs when a label is given as
- the destination of the command, e.g.,
-
- MOVE D0,PICT_HIGH
-
- This applies to the Hardcopy program!!
-
- PS: You can no longer have Relocatable and PC-relative code active
- simultaneously. This is merely a cosmetic correction, not a functional one.
-
- When defining constants you absolutely should use the equal sign, not
- the EQU command, which is used in other assemblers. The program's func-
- tion will be unimpaired, but the assembler speed will be affected,
- and so will your aggravation.
-
- Finally, some tips about the debugger:
-
- When you want to debug a program which you have assembled first, or which
- you have loaded from the File menu selection "Load", you should remember to
- use no BSS segments.
-
- When you start it, though, your program drops into an empty area of memory.
-
- Besides that, you must put such a program into unnecessary memory, by
- beginning any program with executing SETBLOCK.
-
- The same applies to the program end. This should not be ended with
- TERM (GEMDOS 0), since there is no basepage there.
-
- When you have tested the incorrect areas of your program, removed the
- breakpoints and left the debugger, then load and start the program
- (see point 9).
-
- We wish you much enjoyment with your AssemPro ST.
-
- DATA BECKER Duesseldorf W. Germany
- ABACUS SOFTWARE Grand Rapids MI USA
-