






			    TurboAss
			  1989 -soft
		 Markus Fritze & Sren Hellwig


			   Version 1.7








































		  Markus Fritze, Sren Hellwig
			    March 1990
	Imported and translated by the United Coding Alliance
			 


       


1.1		    Turbo-Ass Introduction		    1




1.  General

1.1  Introduction

After long back and forth we (-Soft) decided to market our Assembler
package under the Shareware concept. Prior to that the Assembler was
sold commercially through OMIKRON-Software under the name OMIKRON-
Assembler. However, the Shareware version is an expanded and entlarged
version of the old OMIKRON Assembler. It contains less mistakes, 
additional and improved features and is faster. In the package included
are the Debugger (of course), the Bugadoo (before OMIKRON Debugger).
Consequently every User can enjoy the fast and powerful Assembler 
aswell as the Debugger. Especially since there are so many Programming
Languages that are sold as Shareware or as PD, there aren't any 
reasonably good Assemblers around. 

THE COMPANY OMIKRON SOFTWARE BARES NO RELATION WITH THIS ASSEMBLER 
PACKAGE. -SOFT IS THE ONLY OWNER AND HAS THE FULL RIGHTS FOR THIS 
ASSEMBLER AND DEBUGGER!

This Document is not thought to be an Introduction but a presentation of
the Turbo-Assembler. The complete manual of 254 Pages can be obtained
from the Authors. If needed it is possible to consult issues 11/89 and 
12/89 of "ST-Magazin" for further information. The Assembler and the
Debugger are topics of the Referencecard in the above issues.

Supplement:

Compared to the Manual many features are not included in the README file
it is just to much.......(Markus)

 
1.2 Turbo-Assembler Features

   - Simple and thought-out Operation (Very User Friendly).

   - The Assembler translates approx. 1.3 Million lines/minute.

   - Syntax-Check DURING Input. Partly Semantic-Check! Typing mistakes
     aswell as double use of Symbolnames are shown directly during
     Input.

   - Many powerful Editor Functions such as: Search for Text, Replace 
     Text, "Turn-In" of partial programs (like GFA-Basic 3.0) and many
     more features.

   - Fantastic combinational work between the Debugger and Assembler. In
     crash cases of a program in the Debugger the Assembler auto-
     matically computes the Crash Address into a line number.







1.1		     Turbo-Ass Introduction			2



	

   - Own Keyboard and Screendriver => Even in the most hardest Crash
     conditions the Assembler and Debugger are still functioning.

   - No Macros!!!

   - and many more things....

 
1.3  What is Shareware?

   - Everyone can/should copy Turbo-Ass! However, ALL Files should
     be copied and be included on the disk.

   - If you like the Assembler please send us 50 DM (German Marks). This
     has advantages for all parties involved:

     For us:
     - We don't work totally for free (It took 3 Years to develop the 
       package).

     For the User:
     - He/She will receive a 254 page strong manual.

     - He/She receives the latest version with a customized Serialnumber

     - First Update is for free.

     - If Errors are encountered a Error-Free version is shipped.

     - If an problems/errors arise you could contact us for assistance.

     - When Registering, every User that will state his Serialnumber
       we will award 10DM (Max. of 10 times, we don't want to finance
       PD institutions). The money is thought to be as a "Reward" for
       the demonstration and coping of the product.

     - Note: If anybody is registrering, and the Serialnumber of the
       previous owner is stated the User that this Serialnumber belongs
       to will receive 10DM.

If you want to accept this offer please contact:
		 Markus Fritze
		 Birkhahnkamp 38
		 2000 Norderstedt 1
		 Tel: 040/5223955
		 (from 6 PM including the weekend (please not before 
		  11 AM)








1.1		     Turbo-Ass Introduction


       Bank Code Number: 20069111, Norderstedter Bank
       Account Number  : 407860

When ordering please have some patients with the delivery. Even thought 
I hope to complete all Mail the same day it is possible that we run out
of manuals or new updates are in order, thus this takes sometimes a bit
longer (If you don't receive it after 2-3 Weeks an Inquiry can be send).
I APPOLOGIZE FOR ANY INCONVENIENCE THAT MAY ARISE BECAUSE OF IT.



1.4  Hardware Requirements

ATARI ST with 512k of memory whereas with 1Mb and above it is possible
to hold the Assembler and Debugger at the same time in RAM, which on
its part makes it possible to produce effective Debugging. The high
Resolution Screen is recommended but the Medium one works also very well
(High is better for the eyes). Turbo-Ass works on Colour monitor aswell
as Monochrome Monitors.


1.5  Installation

Copy  TURBOASS.PRG,  TURBOASS.CFG,   TURBOASS.DAT,   BUGABOO.PRG   and
CALL. PRG to a disk or into a Folder. That's it.


1.6  About the Authors

Sren Hellwig and Markus Fritze are currently 21 and 22 Years old and
currently studying computer science at the University of Wedel near 
Hamburg. This is the one of the reasons why we ask for a little bit of
patient. Unfortunately our studies are first priority. We will answer
any letter that include Int. coupons. Mail without international coupons
will be answered only in exceptional cases (Registration doesn't require
international coupons!).



1.7  Copyright 

All rights reserved by -soft. Every person has the right to copy the
Assembler. It is also allowed to upload it to Bulletin Board Systems.
The Turbo-Ass and the complete manual where put together with extereme
professionalism and care. Unfortunately misktakes are hard to exclude 
therefore we want to bring to your attention that -soft is not liable	
for any mishafs caused by the software, hardware or mistakes in the 
manual. We also don't take any responsibility if somebody accuses us
that as a result of Turbo-Ass his whole Harddrive was erases and Source-
coded with a value of a couple million Mark where destroyed. 
Note: Use at your own risk as to the quality and performance of the 
      programs is with you. Should the program prove defective, you 
      assume the entire cost of all necessary repair or corrections
      (This is the same for all Software Companies).




1.1		    Turbo-Ass Introduction			4




2  The Assembler


2.1  User Guide for Turbo-Assembler

The usage is GEM independent which means it was programmed from scratch.
It has the advantage of making Turbo-Ass faster aswell as pretty save to
crashes. Additional to that a few handy features where implemented. 
Nevertheless, GEM should not be overlooked. By pressing the ALT button 
with the small letters in the buttons it causes the same effect as to 
click the buttons with the Mouse.


2.2  The Mouse in Turbo-Assembler

There are many things that can be done with the Mouse, however only the 
usage with the Assembler is explained:

Sourcecode:
Left Mouse Button: 
Simple Click: Set Cursor
Long Click: Mark Block (with scrolling)
Double Click: Jump to Definition of the clicked Symbol

Right Mouse Button:
Simple Click: Scroll Sourcecode (click only at the edge!)
Double Click: Equation to be taken over


2.3  The Editor

Every inputed line is automatically checked for Syntax Errors and 
Semantics. If the line contains no mistakes a formated output of 
this line occurs. In case of an inputed mistakes the type of 
mistake is shown on top (Statusline).


2.4  Special Features

"Absolute Short" as an Adresstypy is directly supported. A ".w" must
be included after the Address.















1.1		    Turbo-Ass Introduction			5





Line-A Routines can be entered with the "LINEA #Number" format. The
Assembler converts non-Motorola inputs into the Motorola standart.


2.5  Optimization

Included:
Absolute long  -> relative
Relative       -> relative short
Absolute long  -> PC-relative
MOVE.L #xx,A0  -> LEA xx,A0 (if following that PC-relative anything 
			     gives)
MOVE.L #xx,-(SP)->PEA xx,A0 (if following that PC-relative anything
			     gives)
Additional to that typical jumps are found for a few C Compilers
(Example: 2 BRA on top of each other where the second BRA is never 
jumped to). If the Assembler finds any cases where Optimization is
possible the Assembler will show a Button called "To Adjust" after
it. The Assembler which as a result will optimize the Source code.
It is also possible to reverse-optimize, if this may seem of any 
help.


2.6  Formulas

Everything standart is accepted such as:
     + - * / ! (LOG.NOT) ~  (NOT or EOR)
     <<  (SHL  >> (SHR) | (OR) & (AND)
     also comparisons are supported

Number Systems supported:
     Decimal	 : . or nothing
     Hexadecimal : $
     Binary	 : %
     ASCII	 : " or '

Internal variables are ^^DATE (GEMDOS-DATE),  ^^TIME (GEMDOS-TIME)
*  (act. PC),  ^^RSCOUNT (act. value of RS-Counter) and  ^^SYMTAB (<>0,
during production of the Symbol table).
Symbols can be 23 character long where ALL characters are ellowed. Vowel
mutation is also supported >126 (also supported). Exception ASCII 255.


2.7  Keyboard Commands

Cursorkeys, Backspace, e.t.c. and as usuall CTRL-Y, CTRL-B....
like Tempus (Text-Editor)
CTRL-D	      doubles the Cursorline.
CTRL-M/ALT-M  makes the moving of a line possible.
CTRL-W	      changes the Numberbase under the Cursor.
CTRL-U	      markes all characters with warnings where




1.1		     Turbo-Ass Introduction			6




a Symbol is defined that is not used anywhere. This is fantastic to
find unused Subprograms!
ALT-Numeric Keyboard   Same as in MS-DOS, gives ASCII back.
ESC+Letter	       Abbreviation for a command.
CTRL-ESC	       Start Keyboard Macro followed by the defined
		       character. All followed Keys are set (not the
		       Mouse). Finish the procedure with ALT-ESC. Keys
		       can be cleared by pressing CTRL-ESC, Key and
		       finally with ALT-ESC (follow the consequantional
		       order).


2.8   Editor Footnotes

With the option "Load..." it is possible to load plain ASCII-Text. Upon
loading the ASCII-Text is converted into the Turbo-Ass Format which will
be indicated. The options "Search Symbol" and "Replace Symbol" allow 
the programmer to search and replace Symbols. The possibility of wild-
card search is possible such as all Symbols that start with the letter
"M" (Mask:"M*") without finding every Move-Instruction (such as all 
ASCII Editors). "Jump to line" allows of jumping to the Symbol 
definition (Input: "M*"). The dialog boxes in the "Setting" Menu are
parly selfexplanatory and the rest is either unimportant or to 
complicated to explain in this document.


2.9  The Assembler

Called with F1. If any errors occur during the Assembly the Assembler
markes all lines containing them. After the Assembly it is possible to
jump from one error to another through the CTRL-J or Shift-CTRL-J. The
Assembler saves the errors, cursor position e.t.c. with the source code!

In the Dialogbox after (!) the Assembly it is possible to set a few 
extra options:

   - Should the Symboltable be attached to the program (or passed on to 
     the Debugger)?
   - The saving of the Assembled program in different formats is also
     possible:

   Debugger: Jump into the Debugger with Program passing (No Memory)
   Standart: Save Program (normal)
   Datas   : Develop Data-Lines (for OMIKRON Basic)
   Absolute: Develop a program for a specific Adress (Example: EPROM)
   BASIC   : Special Format for Basic
   OMINLINE: Produce INLINE-Line for OMIKRON Basic









1.1		     Turbo-Ass Introduction			7




   PARALLEL : Special Transferformat for the Amiga
   SMALLDRI : Produce DRI-Format (However without Import)
   GFAINLINE: Produce GFA Inline Format
   FSTANDARD: Set Fast-Load-Bit in Header (ST-Magazin 11/89) and

	Standard


2.10  Assembler Pseudo-Opcodes

DC,  DS,  BLK,	DCB,  EVEN,  ALIGN,  TEXT,  DATA,  BSS,  END,  =,  EQU,
GLOBAL,  CNOP,	ORG,  ILLEGAL AND REG

DXSET Length[,Value] Define Table
DX 'String' Fill Tableinput with the lenght
RS,  RSRESET, RSSET, RSBSS Relative Segment
OPT D+ Regular Symboltable on
OPT X+ Enhanced Symboltable on
OPT W+ Warnings on
OPT P+ PC-relative program must be developed
OPT O+ Optimization on
With '-' the above can be turned off
OUTPUT 'Filename' Default-Filename
PATH   'Path' Set IBYTS for PATH
IBYTES 'DEGAS.PI3',32000,34 Loads a Data File length 32000 from Byte 34
	of the Data File (Here a Degas Picture)
BASE	Much to complicated..
REPT	Number, ENDR repeats the times between REPT and ENDR
IF, ELSE, ENDC Limited Assembly
FAIL	Abort Assembly 


3  The Debugger


3.1  Foreword

It is actually impossible to explain in short the Debugger that is 
why you will find only the most important commands (Typing HELP in
the Debugger Menu will have all commands summarized)


3.2  General

The Debugger does not use any I/O-Routines of TOS, thus it means that
it is pretty save to say that it is quite immune to crashes. In Load
Operations it will use GEMDOS calls.









1.1		     Turbo-Ass Introduction			8




It run it own Monitorside, which avoids the "disturbing" of the Programm
and the Debugger.

The Debugging can be accomplished through the use of the Mouse or the
Keyboard.

The Debugger can be kept in memory, which on the User sides requires
the copying into an AUTO-Folder or with the command RESIDENT. The
Debugger can be called with CALL.PRG. You can also switch and access
the Debugger through the Assembler (The Assembler can also load the
Debuuger, see the Setting).


3.3  The Usage of the Debugger

The two upper lines correspond to the Functionkeys (with and without
shift). The 3 following lines represent the Registerscontents and Flags.
All parts of the 5 lines can be used with the help of the Mouse.

The rest (max. 20 lines) are modifyable. Here you'll have the 
inputs and the outputs. Here the live goes wild.....

The Keyboard layout (Cursorkeys,  CTRL-M,  CTRL-1,  e.t.c.) is very
similar to that of the Assembler.

Inputs are followed always from the beginnig of the line or after the
Hex number. Empty character are ignort or used as spacers.

Upon loading of the Debugger through the Assembler the CTRL-HELP allows
the jumping back. During the procedure the PC-Position is converted into
the line number. This means that if a program crashed during Debbuging
and the PC is in the program with the help of CTRL-HELP it is possible
to jump to the appropriate part in the Source Code.

SHIFT-SHIFT allows the interuptioun of a running program. The 
Ring-Indicator is also functioning. The Debugger is also reset-proof.
Use as an Emergency brake is proven to be helpfull from time to time.


   F1  - Executes the next command

   SF1 - Interrupts at the next Jump command. Simulates the Tracemode
	 of the 68020 Processor.

   F2  - Sets after the next command a Breakpoint and starts the 
	 program. This is very usefull to go through a Subprogram or
	 to complete a DBRA.

   SF2 - Not to important







1.1		     Turbo-Ass Introduction			9




   F3 -  Executes the program and interrupts after the RTS.
	 Attention! If with MOVEM values are saved in the Stack
	 => Bomb!

   SF3 - Identical to F3 but after RTE

   F4  - DOES NOT execute the next TRAP but jumps into it.

   SF4 - Start program without any Endconditions

   F5  - Next command is ignort, thus skip.

   SF5 - Toggle Insert/Overwrite
 
   F6  - Show Sourcecode (only if Bugaddo was entered through the 
	 Assembler)

   SF6 - Show converted Assembler markers

   F7  - Memorydump from the PC

   SF7 - Show Breakpoints

   F8  - Disassemble and Dump from the PC

   SF8 - Info about Memory contents

   F9  - List from PC (with Symbols if available)

   SF9 - Erase Screen, Warmboot

   F10 - Toggle Screen
  
   SF10- Quit Debugger 


3.4  The Commands

All commands can be abbreviated. 

?Term  Calculates Term
Term can (excluding comparisons) contain all operations of the 
Assembler. Additional to that indirect Addressing is possible with
{400}.l. ".l" is the range. All numbers are identified as HEX. Decimal
numbers are shown with ".". In case of a Symboltable ".Symbolname" 
allows the stepping-in.".

Defined Variables (partly)
^D0-^D7  Registers D0-D7







1.1		     Trubo-Ass Introduction		       10




^A0-^A7  Registers A0-A7
PC, USP, SSP, SR, CCR, SP  Registers
^M0-^M9  Converted Assembler markers


All of the above variables are modifieable with LET Variable=Term.
LET can be abbreviated with "~".

A few more Read-Only-Variables:
TEXT, DATA, BSS, START, END, BASEPAGE, BP, ACTPD, MEMBASE, SAVEAREA.

There are additional 20-30 not that important variables.

BREAKPOINT [Number=Address[,[*|=Value|number|?condition]|K]]
Show, Delete, change and set the Breakpoints


  Set B5=PC+.100 Breakpoint  5	(0-15 is possible) to Address PC+100

  B K  Delete all Breakpoints

  B    Show all Breakpoints

  BK3  Delete Breakpoint #3


  B0=Adr, Number   : Set a Stop-Breakpoint with the number of times
		     executed. Following with the clearing of the 
		     Breakpoint. 

  B0=Adr,*	   : Breakpoints are not deleted after execution. Normal
		     Breakpoints ARE delete.

  B0=Adr,=Wert	   : Set counter to Adress of Adr. In ^BC0 it is counted
		     upwards to see how often the Address was reached.

  B0=Adr,?Term	   : Causes BKPT, Interuption when Term<>0 example:
		     B0=Adr,?^D0=4711 => Interuption when PC=Adr 

GO [Adr]
Start program from Adr or PC

TRACE
Like F1

SHOWMEMORY Term
Show 16 Bytes of(from) Term

UNTRACE [Adr]







1.1		    Turbo-Ass Introduction		       11




Trace until the condition is fullfiled

IF Term
Condition for UNTRACE

OBSERVE Trapno,Funkno
Stop when Trapno(Function) is executed as an example:
OBSERVE 14,8 => Stop when XBIOS(8) = Floprd()

CLS
Clear 2. Screen

MOUSEON / MOUSEOFF
VDI-Mouse on/off

|Instruction
Execute Instruction (great for testing)

LEXECUTE "Filename"[,"Commandline"]
Load relocatable program (=>Pexec()) then start with GO.

LOAD "Filename"[,Adress]
Load File but does not relocate.

SAVE ["Filename"[,Address[,Endaddress]]]
Save File

DIR "[Drive:][Path][Mask]"
Example: DIR "D:\Assembler\*.SRC"

P Command (PRN)
Example: Pd10000,10100" <= Disassembles a program from $10000 to $10100
and prints it out on the printer.

FOPEN Filename, F command, FCLOSE
Output of a command into a File

ERASE, KILL Filename
Delete File (with wildcards!)

FREE 
Show free memory

FREE Drive
Shows amount of storage left on the Disk/Harddrive

MKDIRECTORY Name
Create Folder

RMDIRECTORY Name
Delete Folder

NAME oldname,newname
Change Filename


1.1		     Turbo-Ass Introduction		       12




FATTRIBUT Filename,attribut
Change/set File-Attribut

FORMAT DS/SS,Drive
Format Disk

TYPE Filename
Display ASCII File (SPACE will pause the output)

READSECTOR Track,Sector,Side,Adress,Drive(0 or 1)
Read Sector with XBIOS(8)

WRITESECTOR same as above
Write Sector with XBIOS(9)

All of the following given commands allow the same Syntax as in the
parameters thus only Parameters are represented. This means:

[Parameter] = [From][[,]#[Line]|,To|[,][Bytes[]]]

The setting of parameter is not necessarry. The Debugger takes the
given values automatically.

If the expression "From" is missing the disassembling accours from
the current address. The current Address is the number at the beginnning
of the line, if however this is also missing the last used Address is
recognized.

The End-Address ("To") must not be necessarilly put in. If a "#" is 
entered instead of "To" a single line is put out. If "#" followed by
a number thus is considered a Linenumber to output. It is possible
to output 8 lines, however a max. of 99 are possible. If the End output
is missing completely than (usually) only 16 lines are printed out. The
number is changeable and can be modified with the Variable "Lines". The
last option is the statement of the Bytenumber in square brackets. The 
square brackets can be ignort.

Example:
"d text #5"
Disassembles 5 lines from the beginning of the loaded program.

Example:
"m data[30]"
Memorydump of the DATA-Segment (48 Bytes long).












1.1		     Turbo-Ass Introduction		       13




Disassemble [Parameter]
Disassemble with Dump, hoewever Dump can be changed!

List [Parameter]
Disassemble with Symbols but without Dump, Opcodes can be changed (Don't
forget the RETURN)

SYMBOLTABLE [Parameter]
Display Symboltable

MEMORY[.B|.W|.L][Parameter]
Memorydump with output width (changeable)

ASCII [Parameter]
ASCII Dump (changeable

FIND [From,To], Terms{,Term}
Search a loaded program or memory for Terms

HUNT (see above)
Identical to Find however works on even Addresses

ASCFIND [From,To],String
Search for a ASCII string (with wildcards) in the Disassembler listing.
Slow but practical.

CONTINUE
Continue Hunt, Find or ASCFIND when aborted through ESC

INFO
Try it

SYSINFO
Try this one out too

MOVE, COPY From, To, After
Copy Memoryblock

FILL From, To, Term {,Term}
Fill Memoryblock

CLR [From, To]
Delete Memoryblock (or everything)


COMPARE From, To, Adr
Compare From, To area from Adr

EXIT, QUIT, SYSTEM
Leave Debugger






1.1		     Turbo-Ass Introduction		       14




RESIDENT
Keep Debugger Resident

SET, LET, ~
See above

RESET ALL
Coldboot Debugger

HELP
Gives out all commands (as you'll see, a few more than described here)









			Table of contents

			  Turbo-Assembler

1 General    ..............................................    1
   1.1 Introduction	...................................    1
   1.2 Turbo-Ass Features     .............................    1
   1.3 What is Shareware?     .............................    2
   1.4 Hardware requirements	 ..........................    3
   1.5 Installation    ....................................    3
   1.6 About the Authors     ..............................    3
   1.7 Copyright     ......................................    3

2 The Assembler
   2.1 User Guide to the Assembler     ....................    4
   2.2 The Mouse in Turbo-Assembler	...................    4
   2.3 The Editor     .....................................    4
   2.4 Special Features     ...............................    4
   2.5 Optimization	...................................    5
   2.6 Formulas     .......................................    5
   2.7 Keyboard Commands     ..............................    5
   2.8 Editor Footnotes     ...............................    6
   2.9 The Assembler	 ..................................    6
   2.10 Assembler Pseudo-Opcodes     ......................    7

3 The Debugger	   ........................................    7
   3.1 Foreword     .......................................    7
   3.2 General	   ........................................    7
   3.3 The Usage of the Debugger     ......................    8
   3.4 The Commands	...................................    9







































      


















			 
