SOURCGEN Re-assembler for Atari 800 XL

ATARI HOME
Introduction
Definitions
Disk Contents
Starting SOURCGEN
Symbol-Table & Editor
Generating Source Code
- from an SMB file
- for the ATARI OS
Creating SMB files
The Function Keys
The Functions A - U
A. ADDR/symb search
B. BYTE-change
C. CODE-search
D. DELETE symbols
E. EDIT
F. FILE
G. GO
H. HEAD
I. INDEX
J. JUNK?
K. KEY (0..9)
L. LIST symbols
M. MINIMUM-label
N. NEW
O. OBTAIN symbols
P. PREPARE labels
Q. QUIT (1)
R. RE-ADDRESS
S. SAVE symbols
T. TRACE
U. UTILITY (V. 3.2)
The Fram-disk
Output Menu
Error Messages
Reference card
New in V.3.2

E. EDIT

Der Editor kann außerdem durch das Drücken von <CNTRL>/<-> (Pfeil-auf) oder <TAB> aktiviert werden. Sie können dann den Cursor zu einer beliebige Stelle auf dem Bildschirm fahren und neben einer schon vorhandenen Adresse weitertippen. Beenden Sie eine Eingabe mit einem Diamantenzeichen (CNTRL-<.>), so wird der Editor alle darauf folgenden Zeichen ignorieren. Auf diese oben beschriebene Weise können Sie eine Zeile sehr schnell fehlerfrei eingeben.
Nachdem Sie mit <RETURN> eine Zeile eingegeben haben, befinden Sie sich noch im Editor es sei das Diamantenzeichen befindet sich in
der Zeile. Die Eingabe des Diamantenzeichens (siehe oben) verursacht gleich das Listen ab der eingegebenen Adresse.
Um den Editor zu verlassen, müssen Sie <BREAK> drücken.

1. <ADR>[/]

Der zu der Adresse <ADR1> gehörende Eintrag der Symboltabelle wird gelöscht.

2. <ADR1> [<ADR2>]/<ZEI>

Ab Adresse <ADR1> wird der Code entsprechend dem Zeichen <ZEI> interpretiert bzw. dargestellt.
Folgende Zeichen sind hierbei von Bedeutung:

; Normalcode. Z.B. LDA #$45 (Hat die addresse ein Symbol, wird; nicht gebraucht)
' Normalcode. Jedoch werden Konstante als Zeichen ausgegeben. Z.B. LDA 'X'
! Normalcode. Jedoch werden Konstante als Binärzahlen ausgegeben. Z.B.LDA #%00001111
Hierzu sei bemerkt, dass SOURCGEN bei den Opcodes AND, ORA und EOR immer die binäre Schreibweise verwendet.
&

Normalcode. Jedoch werden die ersten beiden Konstanten als das LO- und HI-Byte einer Adresse behandelt.

ZB. Die Zeilen

LDA #$40
'
'
LDX #$27
werden in folgender Form dargestellt:
LDA #LABEL
'
'
LDX #LABEL:H

wobei LABEL die Adresse $2740 vertritt.

Das Zeichen "&" muss an der Adresse des ersten Befehls stehen!
Zwischen den zwei betreffenden Befehlen darf eine beliebige. Anzahl anderer Befehle erfolgen.

@ wie&, nur #LABEL:H erscheint vor #LABEL
# DFB <Bytefolge> z.B. DFB 0,9,$67,$10,$89,$67
% DFB <Binärzahl> z.B.DFB %01111111
= DFW <Word>       z.B. DFW JAB00
Bei P. PREPARE labels werden die Adressen in die J-Tabelle eingetragen.
| DFW <Word>        z.B. DFW TAB00
Wie "=", jedoch werden bei P. PREPARE labels die Adressen in die T-Tabelle eingetragen.
-

DFW <Word>-1     z.B. DFW JAB00-1
Bei P. PREPARE labels werden die Adressen in die J-Tabelle eingetragen.

_

DFW <word>-1     z.B. DFW TAB00-1
Bei P. PREPARE labels werden die Adressen in die J-Tabelle eingetragen.

" ASC <String>        (ASCII Code normal und invers )
\ ASC <String>        (ASCII Code, letztes Zeichen der Zeile ist invers )
$ ASC <String>        (Bildschirmcode, normal und invers )
* ORG *+ <Zahl>          z.B. ORG *+ $6F
<

Zum Eingeben eines Symboles an die Adresse eines 'nur schreiben'- Hardwareregisters zwischen $D000 und $D4FF.

( :Normal code. z.B. LDA #LABEL        (V.3.2)
(wobei LABEL <= $FF und eine Konstante oder zero page Adresse darstellt)
. ASCII Listing (zum Anchauen von ASCI Dateien bzw. Anleitungen)          (V.3.2)

Wird kein Zeichen für <ZEI> eingegeben, so wird Normalcode angenommen.

Die Zeichen "=" und "-" können Sie auch invers eingeben was zur Folge hat, dass die HI- und LO-Bytes von <Word> vertauscht werden. Das Anwenden dieser Möglichkeit erfordert allerdings eine entsprechende Änderung des Codes, die Sie anschließend mit dem ATMAS-II Assembler vornehmen können. SOURCGEN markiert zur Erinnerung die betroffenen Zeilen mit einem inversen "-" bzw. "=". Mit diesen Zeichen führt das Assemblieren mit ATMAS-II zu einer Fehlermeldung die Ihnen die genaue Stelle der Markierung zeigt.

Bytes die zwar mit '"', '\' oder '$' markiert sind, mit der ATMAS-II Assembler jedoch als Zeichen nicht darstellbar sind, werden als Bytes (mit DFB) dargestellt. Steuerzeichen werden von SOURCGEN zusätzlich mit "[S]" gekennzeichnet.

Wird für <ZEI> keine Angabe gemacht, so wird ab <ADR1> Normalcode ausgegeben.

Eine Angabe für <ADR2> kann dann sinnvoll sein, wenn nach Vorbereitung der Labels (siehe P. PREPARE labels): - ein Label (zB. T2988) an <ADR1> steht - und ein oder mehrere weitere Labels an Adressen unmittelbar davor oder danach stehen. Alle Labels im Bereich <ADR1> bis <ADR2> werden dann im Verhältnis zu dem Label an <ADR1> dagestellt (zB. T2988-1, T2988+3, etc.). ADR2 kann grösser oder kleiner sein als ADR1. Jedoch der Abstand zwischen ADR1 und ADR2 darf nicht grösser sein als $80.

3. <ADR1> [<ADR2>]/<SYM>[<ZEI>]

Für <SYM> können Sie ein Symbol eintragen das dann beim Listen immer anstelle von <ADR1> stehen wird. Wird ein Symbol von mehr als acht Zeichen angegeben, so nimmt SOURCGEN nur die ersten acht als Symbol an, schreibt aber nach Wunsch die komplette Angabe in das Kommentarfeld (siehe Output Menu).

4. <ADR1> [<ADR2>]/[<SYMBOL>];<KOM>[<ZEI>]

Anstelle von <KOM> können Sie einen Kommentar eintragen, der dann je nach Wunsch im Listing wiedergegeben werden kann. (Siehe Output Menu)

5a. <ADR1>/<BYTE>

Hier wird am besten gleich anhand eines Beispiels erklärt:
Nehmen wir an es steht an der Adresse 2800 der Befehl: LDA #$FE
Geben Sie jetzt 2801/2A ein, so erscheint dann beim Listen die Schreibweise:

LDA #LABEL wobei LABEL die Adresse 2AFE vertritt.

5b. <ADR1>/<BYTE>:

Auf ähnliche Weise wie in 5a:
Sollte an der Adresse 2800 das Befehl: CMP #$FE stehen und Sie geben 2801/2A: ein, so erscheint jetzt beim Listen die Schreibweise:

LDA #LABEL:H wobei LABEL die Adresse FE2A vertritt.

Sie merken, dass nicht die Adresse des Opcodes verwendet wird sondern die des Konstanten, also in diesem Fall 2801.
Nachdem Sie eine solche Eingabenfolge gemacht haben, sollten Sie immer gleich beim Listen überprüfen, ob Ihre Angaben richtig sind.