home *** CD-ROM | disk | FTP | other *** search
/ Dave Lowe: Assempro 1987.07.12 / Lowe_Assempro_1987_07_12.img / READ_ME < prev   
Encoding:
Text File  |  1985-11-20  |  7.7 KB  |  223 lines

  1. IMPORTANT NOTICE:
  2.  
  3. Since AssemPro has been updated, we have to make a few
  4. additions on this diskette file.
  5.  
  6. 1)  Since the program turned out to be longer than anticipated, and
  7. a number of programs were added, the diskette is pretty full of data.
  8. Before you start working with AssemPro, you should format a data diskette,
  9. and copy the TOS and DEMO folders to it. Then you'll have enough room to
  10. save programs to be assembled. Remember to have the AssemPro original
  11. diskette in drive A.
  12.  
  13. 2)  For reasons of versatility, and because of memory needs, AssemPro
  14. requires one of the following hardware configurations:
  15.  
  16. -  Atari 260 ST with TOS in ROM
  17. -  Atari 520 ST with TOS in ROM
  18. -  Atari 260 ST expanded to 1Meg with TOS in ROM or on disk
  19. -  Atari 520 ST expanded to 1Meg with TOS in ROM or on disk
  20. -  Atari 520 ST+ with TOS in ROM or on disk
  21. -  Atari 520 ST/M with TOS in ROM or on disk
  22. -  Atari 1040 ST with TOS in ROM or on disk
  23.  
  24. 3) When you want to delete a file, choose and delete your file from the
  25. file selector box; you can continue deleting files from that box, until
  26. you click CANCEL.
  27.  
  28. 4) The following operations have been added to AssemPro:
  29.  
  30. a<<b :  Shift a (binary) b bits to the left. This is the equivalent of
  31.         a*2^b.
  32. a>>b :  Shift a (binary) b bits to the right. This is the equivalent of
  33.         ABS(a/2^b)
  34. ?a   :  Determine the number of most significnt bits from a. This cor-
  35.         responds to the logarithm of base 2 from a.
  36.  
  37. These three new operations work with integers (no leading characters).
  38. Examples:
  39.  
  40. 1<<3       = 8
  41. 1024>>5    = 32
  42. ?8         = 3
  43. ?1024      = 10
  44. ?32        = 5
  45. %1011<<3   = %1011000
  46. %1010>>3   = %1
  47. ?%1010     = 3
  48. ?(1<<a)    = a
  49.  
  50. 5) Changes to the assembler:
  51.  
  52. Local variables are valid only when between two global variables, as
  53. already described in the manual. These are undefined above and below.
  54.  
  55. Redefinable global variables do not influence the valid range of local
  56. variables, however, when you've already defined them!
  57.  
  58. So, the following program is correct:
  59.  
  60. REDEFINABLE@ = 0
  61.  
  62. GLOBAL_1:
  63. \LOCAL_1 = 27
  64. REDEFINABLE@ = \LOCAL_1
  65. \LOCAL_2 = 1 << \LOCAL_1
  66. GLOBAL_2:
  67.  
  68. Symbols will be replaced by the assembler as strings, e.g.:
  69.  
  70. SYMBOL EQU BlahBlahBlah
  71.  
  72. From the line SYMBOL, the assembler creates BlahBlahBlah.
  73.  
  74. However, this does not apply to the symbol definition, which
  75. can't make much sense of this. So, the assembler replaces the line
  76.  
  77. SYMBOL EQU BlahBlahBlah
  78.  
  79. with the variable SYMBOL, but it doesn't read BlahBlahBlah, and signals
  80. an error.
  81.  
  82. When the occasion arises that a symbol which stands in the first column
  83. of a line needs replacement, then you can write a $ character in front
  84. of the symbol. For example:
  85.  
  86. DEFINE:MACRO $\1,$\2 ;<= These $'s signal the system to handle the
  87.                      ; \1 and \2 as symbols.
  88. $\1=\2               ;<= \1 should be replaced
  89. ENDM
  90.  
  91. DEFINE CONSTANT,7
  92.  
  93. Will put CONSTANT=7 in from the assembler.
  94.  
  95. These special examples don't make much sense as they stand. 
  96. There are, however, a number of complex applications where you can
  97. use this, such as in converting C structures to assembler format.
  98.  
  99. 6) Additional assembler commands:
  100.  
  101. IFD variable
  102.  
  103. Tests for whether a variable has been defined, and operates like a 
  104. normal IF command. Variables should not be handled as symbols, that is, 
  105. when they've been defined, and replaced as the respective character strings,
  106. and the assembler eventually goes to error checking. 
  107.  
  108. IFND variable
  109.  
  110. This is the opposite of IFD. This variable test for whether the variable
  111. has NOT been defined. Here the same restrictions apply as for IFD. Both
  112. commands can be given as an arithmetic expression. It can then test 
  113. whether all variables are defined or not.
  114.  
  115. It is difficult when the variable is only undefined during pass 1. It will
  116. then only assemble program sections bracketed by IFND-ELSE or ELSE-ENDIF on
  117. pass 1. This is only allowed when this program section only contains
  118. variable definitions and no 68000 commands. So, variable definitions 
  119. should give no forward references:
  120.  
  121.  IFND FLAG
  122.  
  123. FLAG=1
  124. M:MACRO
  125.  ;
  126.  ENDM
  127. K1=15
  128. K2=LABEL  ;<<<<<<<<< K2 contains the value 0, since the label has not
  129.           ;yet been defined during pass 1.
  130.  ENDIF
  131.  
  132. \1=0      ;Here we have a problem....
  133.  
  134. LABEL:
  135.  
  136. You must define them with local variables directly following the ENDIF.
  137. These belong namely to the last global variables defined. During pass 1 
  138. it is the constant K2, but on pass 2 it is the last global variable.
  139. The result: The assembler doesn't find \1 during pass 2.
  140.  
  141. 8) When in the editor, the cursor moves the next tab to the left (!) when
  142. you press <Shift> and <Tab>.
  143.  
  144. 9) Additions to the debugger:
  145.  
  146. When you click "Execute program" in the debugger, you can state an option
  147. of whether the program just loads, just starts, or loads AND starts. When
  148. you want to debug a program, do the following:
  149.  
  150. -  Load the program with load only.
  151. -  Insert breakpoints, or whatever you prefer to do, to get the program
  152.    back to the debugger
  153. -  Now call the "Execute program" call, and start the program. This is
  154.    necessary for initialization, without crashing the loaded program.
  155.    Always start from the beginning of the program.   Now you don't need to
  156.    select the filename anymore.
  157.  
  158. When you want to get the program running again after returning to the 
  159. debugger, either click the "Program start" field, or press <Control><S>.
  160.  
  161. 10)  Here is some advice for all of you who want to single-step through
  162.      the operating system:
  163.  
  164. When you use the mouse and not the keyboard to control the debugger, the
  165. problems described in the manual do not occur. These parameters aren't 
  166. spot-checked by GEMDOS, XBIOS or BIOS routines. Examine the KBSHIFT
  167. function for a demonstration.
  168.  
  169. 11)  Some other improvements worth mentioning:
  170.  
  171. When you execute a double-click on the debugger field "From address",
  172. you get the beginning of the program found in memory, and the
  173. starting address given in the Info line.
  174.  
  175. Besides that, when you single-click "From address", the following appears:
  176.  
  177. *=$__________
  178.  
  179. 12)  Furthermore, we should mention some other items not made clear
  180. in the manual.
  181.  
  182. When you wish to assemble programs from magazines or books, you must have
  183. the relocatable option on, otherwise the assembler will signal errors
  184. where none exist.
  185.  
  186. This is allowable only with relocatable programs when a label is given as
  187. the destination of the command, e.g.,
  188.  
  189. MOVE D0,PICT_HIGH
  190.  
  191. This applies to the Hardcopy program!!
  192.  
  193. PS:  You can no longer have Relocatable and PC-relative code active
  194. simultaneously. This is merely a cosmetic correction, not a functional one.
  195.  
  196. When defining constants you absolutely should use the equal sign, not
  197. the EQU command, which is used in other assemblers. The program's func-
  198. tion will be unimpaired, but the assembler speed will be affected,
  199. and so will your aggravation.
  200.  
  201. Finally, some tips about the debugger:
  202.  
  203. When you want to debug a program which you have assembled first, or which
  204. you have loaded from the File menu selection "Load", you should remember to
  205. use no BSS segments.
  206.  
  207. When you start it, though, your program drops into an empty area of memory.
  208.  
  209. Besides that, you must put such a program into unnecessary memory, by
  210. beginning any program with executing SETBLOCK.
  211.  
  212. The same applies to the program end. This should not be ended with 
  213. TERM (GEMDOS 0), since there is no basepage there.
  214.  
  215. When you have tested the incorrect areas of your program, removed the
  216. breakpoints and left the debugger, then load and start the program 
  217. (see point 9).
  218.  
  219. We wish you much enjoyment with your AssemPro ST.
  220.      
  221. DATA BECKER Duesseldorf W. Germany
  222. ABACUS SOFTWARE Grand Rapids MI USA
  223.