home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / as65 / docu / as65xx_txt < prev    next >
Text File  |  1995-02-27  |  42KB  |  1,167 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                            Bedienungsanleitung
  11.  
  12.                                AS65, V2.3d
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.               Cross-Assembler für die 6502 Prozessorfamilie
  20.                     lauffähig auf allen AMIGA Modellen
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.             (c) 1989-93      Thomas Lehmann
  36.                              Zedernstraße 36
  37.                        41239 Mönchengladbach
  38.                              Tel.: 02166/340012
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47. Inhaltsverzeichnis
  48.  
  49.  
  50. Einleitung ...................................................... 
  51. Installation .................................................... 
  52. Assembleranweisungen,  ein Überblick ............................ 
  53.  
  54. Assemblersteuerung ..............................................
  55.  PSO  "pro" .....................................................
  56.  PSO  "*=" ......................................................
  57.  PSO  "*!=" .....................................................
  58.  PSO  "showsym" .................................................
  59.  PSO  "ascii" ...................................................
  60.  PSO  "liston" ..................................................
  61.  PSO  "listoff" .................................................
  62.  PSO  "tabsize" .................................................
  63.  PSO  "error" ...................................................
  64.  PSO  "setout" ..................................................
  65.  PSO  "fspeed" ..................................................
  66.  PSO  "showpc" ..................................................
  67.  PSO  "breakpt" .................................................
  68.  PSO  "conprt" ..................................................
  69.  PSO  "warnoff" .................................................
  70.  PSO  "warnon" ..................................................
  71.  PSO  "include" .................................................
  72.  PSO  "endasm" ..................................................
  73.  
  74. Labels  und Symbole .............................................
  75.  PSO  "block" ...................................................
  76.  PSO  "bend" ....................................................
  77.  PSO  "set" .....................................................
  78.  PSO  "equ" .....................................................
  79.  PSO  "=" .......................................................
  80.  PSO  "org" .....................................................
  81.  PSO  "edo" .....................................................
  82.  PSO  "sdo" .....................................................
  83.  PSO  "elo" .....................................................
  84.  PSO  "slo" .....................................................
  85.  PSO  "macroseg" ................................................
  86.  PSO  "macro" ...................................................
  87.  PSO  "endmac" ..................................................
  88.  PSO  "hidemac" .................................................
  89.  PSO  "showmac" .................................................
  90.  PSO  "hidemac" .................................................
  91.  PSO  "showmac" .................................................
  92.  
  93. arithmetische Ausdrücke .........................................
  94. Rechenzeichen ...................................................
  95.  
  96. Bedingte  Assemblierung .........................................
  97.  PSO  "if" ......................................................
  98.  PSO  "ifequ" ...................................................
  99.  PSO  "ifpl" ....................................................
  100.  PSO  "ifmi" ....................................................
  101.  PSO  "ifdef" ...................................................
  102.  PSO  "ifndef" ..................................................
  103.  PSO  "endif" ...................................................
  104.  
  105. Tabellen   ......................................................
  106.  PSO  "byte" ....................................................
  107.  PSO  "dbyte" ...................................................
  108.  PSO  "word" ....................................................
  109.  PSO  "rta" .....................................................
  110.  PSO  "text" ....................................................
  111.  PSO  "null" ....................................................
  112.  PSO  "shift" ...................................................
  113.  PSO  "time" ....................................................
  114.  
  115. Assemblerschleifen ..............................................
  116.  PSO  "assloop" .................................................
  117.  PSO  "assend" ..................................................
  118.  
  119. Aufruf des Assemblers ...........................................
  120.  
  121. Assembler Optionen ..............................................
  122.  Option  -w .....................................................
  123.  Option  -p .....................................................
  124.  Option  -P .....................................................
  125.  Option  -f .....................................................
  126.  Option  -a .....................................................
  127.  Option  -s .....................................................
  128.  Option  -S .....................................................
  129.  Option  -l .....................................................
  130.  Option  -L .....................................................
  131.  Option  -e .....................................................
  132.  Option  -E .....................................................
  133.  Option  -i .....................................................
  134.  Option  -I .....................................................
  135.  Option  -D .....................................................
  136.  Option  -d .....................................................
  137.  Option  -o .....................................................
  138.  
  139. Utilitys ........................................................
  140.  ShowOpc ........................................................
  141.  MakeDef ........................................................
  142.  Convert ........................................................
  143.  
  144.  
  145.  
  146. Einleitung:
  147.  
  148.  
  149. Dieses  Programm ist Public Domain. Die nicht komerzielle Weitergabe wird von
  150. mir ausdrücklich unterstützt.  Für  evt. eintretende Fehler bei der Benutzung
  151. dieses Prg.`s übernehme ich keine Haftung. Sollten ggf.  irgentwelche  Fragen
  152. auftauchen stehe ich Euch gerne, zu normalen Zeiten, zur Verfügung. Auf jeden
  153. Fall  möchte ich  Euch viel  Spaß bei der  Entwicklung  eigener 6502 Software
  154. wünschen.
  155.  
  156.  
  157.  
  158. Der  "AS65"  Assembler  ist  ein  komfortabler  und  leistungsfähiger  2 Pass
  159. Cross-Assembler für die gesamte 6502 Prozessor-Familie. Er liest Quellangaben
  160. die  aus  6502 Maschinensprache bestehen, von einem oder mehreren Inputfiles,
  161. übersetzt  sie in 6502 Maschinencode und schreibt das Resultat in ein anderes
  162. File.   Optional  kann  parallel  hierzu  auch ein, von einem Editor lesbares,
  163. ASCII-File erzeugt werden.
  164.  
  165.  
  166.  
  167.  
  168. Eine  Zeile  des Source-Files kann aus maximal 250 Zeichen bestehen, es können
  169. bis  zu  30  Files gleichzeitig geöffnet (include) werden.  Die Anzahl der bei
  170. der  Assemblierung eingelesenen Files ist jedoch unbegrenzt.  Die Größe des zu
  171. Assemblierenden  Codes  sowie  die  Anzahl  der  möglichen Symbole, Labels und
  172. Macros  ist  nur  vom verwendetem Speicherplatz abhängig.  Der Objekt-Code ist
  173. Prozessorbedingt  auf 64kB begrenzt, (maximaler Adressierungsbereich der  6502
  174. Familie).
  175.  
  176.  
  177.  
  178. Zu  beachten ist,  daß Label Definitionen grundsätzlich am  Anfang einer Zeile
  179. beginnen  müssen und  alle anderen  Anweisungen durch  mindestens eine  Spalte
  180. vom Anfang der Zeile getrennt sein müssen.
  181. Diese  Einschränkung wurde zu Gunsten der Übersetzungs Geschwindigkeit gemacht.
  182.  
  183.  
  184.  
  185.  
  186. Installation
  187.  
  188.  
  189. In dem folgendem Beispiel wird davon ausgegeangen das der Assembler unter dem
  190. Directory "DH0:AS65" installiert werden soll.
  191.  
  192. die folgende Enviroment Variablen für den Assembler muß eingestellt werden:
  193. setenv AS65_HOME DH0:AS65/AS65_Home ; Include Directory (Opcodes, defaults)
  194.  
  195. folgende Enviroment Variablen für den Assembler sollten eingestellt werden:
  196. setenv AS65_TMP ram:      ; TMP-File wird im RAM: erzeugt
  197. setenv AS65_OUT ram:      ; alle erzeugten Files ins RAM:
  198. setenv AS65_INC d/,s/     ; Such Path für Includes
  199.  
  200.  
  201. Resident DH0:AS65/as65      ; Assembler Resident installieren
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209. Assembleranweisungen, ein Überblick
  210.  
  211.  
  212. Assemblersteuerung:
  213. liston                 Assemblerlisting einschalten
  214. listoff                Assemblerlisting ausschalten
  215. tabsize 5              Tabulatorabstand Ihres Editors, für die korrekte
  216.                        Ausgabe des erzeugten Listings
  217. setout "path/dir"      alle vom Assembler erzeugten Files im angegeben
  218.                        Directory erzeugen
  219. fspeed                 auf maximale Assembliergeschwindigkeit umschalten
  220. showpc $100            Programmcounter nur alle $100 Bytes anzeigen
  221. showpc val             aktuellen Programmcounter einmal anzeigen
  222. breakpt                Assemblierung im Pass 2 anhalten
  223. breakpt 2              dito, andere Schreibweise
  224. breakpt 1              Assemblierung im Pass 1 anhalten
  225. breakpt f              Assemblierung auch bei "full Speed" anhalten
  226. conprt                 String während Assemblierung auf Console ausgeben
  227. warnoff                keine Assembler Warnings zeigen
  228. warnon                 Warnings wieder zeigen
  229. endasm                 Assemblierung vorzeitig beenden
  230. assloop                Beginn einer Assemblerschleife
  231. assend                 Ende einer Assemblerschleife
  232.  
  233.  
  234. Prozessortypen:
  235. pro R65C02             Opcodes der ROCKWELL 65C02 CPU zulassen
  236.  
  237.  
  238. Files:
  239. ascii                  erzeugt neben dem Object- auch ein ASCII-File
  240. error f                Fehlermeldungen nur in ein Error-File
  241. error fs               Fehlermeldg. in ein Error-File und auf Screen anzeigen
  242. include path/name      weiteres Source-File in die Assemblierung aufnehmen
  243.  
  244.  
  245. Programmcounter:
  246. *= $1000               Programmcounter setzen, hier Hex 1000, Bereich
  247.                        zwischen altem und neuen PC wird mit $FF gefüllt
  248. *!= $2000              PC neu setzen, Bereich nicht füllen
  249.  
  250.  
  251. Tabellen:
  252.  
  253. byte                   einzelnes Byte aufnehmen
  254. dbyte                  16 BIT Wert high/low aufnehmen, doppel Byte
  255. word                   16 BIT Adresse low/high aufnehmen, z.B. Tabellen
  256. rta                    16 BIT Adresse minus 1 aufnehmen
  257. text                   Textstring aufnehmen
  258. null                   Textstring aufnehmen, Null anhängen
  259. shift                  Textstring aufnehmen, letztes Zeichen geshiftet
  260.  
  261. time                   aktuelleZeit aufnehmen: Fri Jun 30 01:49:05 1989
  262. time s                 dito, andere Schreibweise
  263. time weekdaye          Wochentag, Mon-Sun in englisch
  264. time weekdayg          Wochentag, Mo-So in deutsch
  265. time year              Jahr,1989-????
  266. time monthe            Monat, Jan-Dez in englisch
  267. time monthg            Monat, Jan-Dez in deutsch
  268. time month             Monat als Zahl (01-12)
  269. time day               Tag, 01-31
  270. time hour              Stunden, 01-23
  271. time min               Minuten, 00-59
  272. time sec               Sekunden, 00-31
  273.  
  274.  
  275. Symboltabelle:
  276. set                    Definition einer Variablen
  277. equ                    Definition einer Konstanten
  278. =                      dito, andere Schreibweise
  279.  
  280. block                  öffnen eines Labelblocks, lokaleLabels
  281. bend                   Labelblock schließen
  282.  
  283. showsym                Symboltabelle auf Screen anzeigen
  284. showsym f              Symboltabelle in ein File schreiben
  285. showsym fs             Symboltabelle zeigen und in ein File schreiben
  286.  
  287.  
  288. Macros:
  289. macroseg               Beginn der Definition eines Macros ohne interne Labels
  290. macro                  dito, mit internen Labels
  291. endmacro               Ende der Macrodefinition
  292. hidemac                Macroausgabe beim Assemblerlisting unterdrücken
  293. showmac                Macrodefinition wieder anzeigen
  294.  
  295.  
  296. Bedingte Assemblierung:
  297. if                     erfüllt wenn Ergebnis ungleich 0
  298. ifequ                  erfüllt wenn Ergebnis gleich 0
  299. ifpl                   erfüllt wenn Ergebnis positiv
  300. ifmi                   erfüllt wenn Ergebnis kleiner 0, negativ
  301. ifdef                  erfüllt wenn Symbol (Variable oder Konstante)
  302.                        definiert ist
  303. ifndef                 Gegenteil von .ifdef
  304. endif                  Ende einer .if Anweisung
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312. Assemblersteuerung
  313.  
  314. PSO "pro":
  315. Wollen  Sie  Opcodes  in  Ihrem Programm verwenden die nicht dem Standart Type
  316. "6502"  entsprechen, z.B.:  "mul" bei der ROCKWELL 65C00/XX-Familie, müßen Sie
  317. den  Prozessortype  mittels  dem PSO "pro" definieren.  Dadurch  haben Sie die
  318. Gewißheit  nur  Befehle  der  angegebenen CPU verwendet zu haben.  Dieses kann
  319. Ihnen  eine  unötige  Fehlersuche  ersparen,  als  wenn Sie z.B.  einen Befehl
  320. verwenden   könnten  der  auf  einer  anderen  CPU  durchaus  zugelassen  ist.
  321. Angenommen  Sie  wollen  ein  Prg.   für  einen  R65C02 schreiben und auch die
  322. Prozessorspezifischen  Opcodes  verwenden:
  323. -> pro R65C02
  324. durch diese Anweisung werden  die  Opcodes des R65C02 nachgeladen und benutzbar.
  325. Das `R` steht hier für ROCKWELL.  mögliche Prozessortypen bzw.  kompatible:
  326.  
  327. R6500 oder R_STD              Standarttype und default-Einstellung
  328. R65C00
  329. R6501
  330. R65C01
  331. R6502
  332. R65C02
  333. R65C102
  334. R65C112
  335. R65C10
  336. R6511
  337.  
  338. PSO "*=":
  339. PSO "*!=":
  340. Mit  diesen  beiden  PSO`s  läßt sich der Programmcounter beeinflussen.  Durch
  341. "*="  erhält  er einen neuen Wert.  War der PC vorher schon definiert, so wird
  342. der Adressbereich zwischen dem aktuellem PC und dem neuen PC mit $FF gefüllt.
  343.       *= $2000              ;PC erhält den Wert $2000
  344.       asl a                 ;PC hat den Wert $2001, ($2000+1 Byte "asl a")
  345.       *= $3000              ;PC wird neu gesetzt, Bereich von $2001 bis $2fff
  346.                             ;wird mit $FF gefüllt
  347.  
  348. Der  PSO  "*!=" verhält sich genauso wie "*=" mit der Ausnahme daß der Bereich
  349. zwischen  altem  und neuem PC nicht gefüllt wird.  Eine Anwendung hierfür wäre
  350. z.B.  ein 8K Eprom welches in zwei Adressbereichen unterteilt ist ($7000-$7FFF
  351. und  $F000-$FFFF).
  352.  
  353. PSO "showsym":
  354. Bei  der Assemblierung weist der Assembler den gefunden Symbolen bzw. Labeln
  355. einen bestimmten Wert zu.  Um sich nun alle verwendeten  Symbole  auf  dem
  356. Bildschirm  anzeigen  zu  lassen dient der PSO
  357. -> "showsym".
  358. Die  Ausgabe kann auch auf ein File umleitet werden, benutzen Sie hierfür  den
  359. Parameter  "f".
  360. -> showsym  f
  361. Der Assembler erzeugt ein File im aktuellem Directory, (wenn die Ausgabe nicht
  362. mittels setout umgeleitet  worden ist), welches den Namen des Source-Files,
  363. jedoch mit der Endung "sym",  trägt.
  364. Wollen  Sie die Ausgabe der Symboltabelle gleichzeitig in ein File und auf den
  365. Bildschirm, so benutzen Sie die Parameter "fs".
  366. -> showsym fs
  367.  
  368.  
  369.  
  370. PSO "ascii":
  371. Der  Assembler  erzeugt neben dem Objektfile, welches binär vorliegt, auch ein
  372. von einem Editor lesbares ASCII-File, Endung ".asc"
  373.  
  374.  
  375.  
  376. PSO "liston":
  377. Der   Assembler  erzeugt  im  Pass2  ein  Listing  welches  die  Adresse,  den
  378. assemblierten  Code und die dazugehörige Sourcezeile ausgibt. Das Listing wird
  379. erst  ab  der  Position  erzeugt, an der ".liston" angegeben wurde.  Auch hier
  380. gelten  die Parameter "f" und "fs".  Das erzeugte File trägt jedoch die Endung
  381. ".lst".
  382. -> liston  f
  383. Assemblerlisting in ein File umleiten.
  384. -> liston fs
  385. dito, und auf dem Bildschirm anzeigen.
  386.  
  387.  
  388.  
  389. PSO "listoff":
  390. Das  durch  "liston"  eingeschaltete  Assemblerlisting  wird durch
  391. -> "listoff"
  392. wieder  ausgeschaltet.   So  können  Sie  sich  bestimmte  Routinen  nach  der
  393. Assemblierung anzeigen lassen.
  394.  
  395.  
  396.  
  397. PSO "tabsize":
  398. Angenommen  Sie haben Ihren Editor auf einen Tabulatorabstand von vier Zeichen
  399. eingestellt  und  erzeugen  ein  Listing  welches auf dem Bildschirm angezeigt
  400. werden   soll   dann   wird  durch  tabsize  4   dem  Assembler  der  aktuelle
  401. Tabulatorabstand  mitgeteilt.   Anstelle  von  TAB`s  wird  bis  zur  nächsten
  402. TAB-Position  SPACE  ausgegeben.   Hierdurch  wird  das  Listing immer korrekt
  403. erzeugt, unabhängig von dem im CLI eingestelltem Tabulatorabstand.
  404.  
  405. Die default-Einstellung ist TAB 3.
  406.  
  407.  
  408.  
  409. PSO "error":
  410. In   der   Standarteinstellung   werden  alle  Fehlermeldungen,  die  bei  der
  411. Assemblierung  auftreten,  auf  dem  Bildschirm  angezeigt.   Wollen Sie diese
  412. Ausgabe  ausschalten,  benutzten  Sie  den  PSO  "error"  ohne Parameter.  Der
  413. Parameter  "f"  leitet  diese  Ausgabe  auf ein File mit der Endung ".err" um.
  414. Sollen  die  Fehler  ebenfalls  auf dem Bildschirm angezeigt werden so ist der
  415. Parameter  "fs"  zu  benutzen.
  416. -> error fs
  417.  
  418. PSO  "setout":
  419. Normalerweise werden alle vom Assembler erzeugten Files, (.obj,  .asc,  .sym,
  420. .lst, .err), im aktuellem  Directory  erzeugt. Angenommen Sie wollen diese
  421. Files  in der RAM-Disk  erzeugen  lassen,  so  teilen  Sie  dies dem Assembler
  422. durch
  423. -> setout "RAM:"
  424. mit.
  425.  
  426.  
  427.  
  428. PSO "fspeed":
  429. Der Assembler schaltet auf volle Geschwindigkei um.  Es werden keine Ausgabe-
  430. files   erzeugt. Die Ausgabe der Symboltabelle und des Assemblerlisting  werden
  431. unterdrückt. Der Programmcounter wird während der Assemblierung  nicht mehr
  432. angezeigt. Dieser PSO dient der schnellstmöglichen Assemblierung Ihres
  433. Source-Codes.
  434.  
  435.  
  436.  
  437. PSO "showpc":
  438. In  der  Grundeinstellung wird die Adresse an der sich der Assembler befindet,
  439. (aktueller   Programmcounter),   Byte  für  Byte  ausgegeben.   Diese  Ausgabe
  440. verschlingt jedoch unötige Zeit, die besser dem eigentlichem Assembliervorgang
  441. zur  Verfügung  gestellt  werden  sollte.   Bei  längeren Programmen reicht es
  442. durchaus  wenn  der PC nur jedes 256`te Byte angezeigt wird, dies erreicht man
  443. durch:
  444. -> showpc 256 (Hex $100) oder
  445. -> showpc $100
  446.  
  447. Um  die  Anzeige  des  PC`s  vollständig auszuschalten geben Sie den Parameter
  448. "off" an. 
  449. -> showpc off
  450.  
  451. Haben  Sie  den PC durch "showpc off"  oder  "fspeed" ausgeschaltet und wollen
  452. ihn  trotzdem einmal angezeigt bekommen gibt es auch hierfür eine Möglichkeit:
  453. -> showpc val
  454. wobei val für die Adresse an der der PC ausgegeben werden soll steht.
  455.  
  456.  
  457.  
  458. PSO "breakpt":
  459. Angenommen  Sie  wollen  sich  das Assemblerlisting an einer bestimmten Stelle
  460. genauer  ansehen  so  wäre  es  das  einfachste  die  Ausgabe an dieser Stelle
  461. anzuhalten,  hierzu  dient  der  PSO "breakpt".
  462. -> breakpt
  463. Wird  kein Parameter angegeben,  gilt  der  Breakpoint erst im Pass2.
  464. -> breakpt 1
  465. Die Assemblierung wird  nur im  Pass1 angehalten.
  466. -> breakpt  f
  467. Die  Assemblierung wird auch angehalten wenn "fspeed" angegeben wurde.
  468.  
  469. Eine Kombination der Parameter ist durchaus möglich.
  470.  
  471.  
  472. PSO "conprt":
  473. Mit diesem PSO kann während der Assemblierung eine Ausgabe auf die Console ge-
  474. macht werden. Hierdurch kann man z.B. eine Bedingung dokumentieren.
  475.  
  476.   if MEMORY-1000             ; ist Memory überschritten ?
  477.   conprt "Memory overflow"   ; Ausgabe auf Console
  478.   endif
  479.  
  480.  
  481.  
  482. PSO "warnoff":
  483. Wenn  z.B.   während  der  Assemblierung  ein  Überlauf  bei  einer Berechnung
  484. stattfindet,  wird  dem  User  dies  durch  ein  WARNING  angezeigt.   Der PSO
  485. "warnoff" unterdrückt diese Anzeigen.
  486.  
  487.  
  488.  
  489. PSO "warnon":
  490. Dies  ist  das  Gegenteil  von  "warnoff",  war  die  Anzeige  durch "warnoff"
  491. ausgeschaltet, so werden WARNINGS nach "warnon" wieder angezeigt.
  492.  
  493.  
  494.  
  495. PSO "include":
  496. Ein  weiteres  Source-File wird mit assembliert.  In dem "include"-File könnte
  497. ein weiteres File durch "include"  mit in die Assemblierung einbezogen werden.
  498. Maximal  30  Source-Files  können  auf diese Art gleichzeitig geöffnet werden.
  499. include source_file
  500.  
  501.  
  502.  
  503. PSO "endasm":
  504. Dieser   PSO   markiert  das  Ende  der  Assemblierung.   So  können  Sie  die
  505. Assemblierung  an  jeder  beliebigen  Stelle  im  Source beenden.  Anwendungen
  506. dieses PSO sind besonders in der Testphase eines Prg.`s denkbar.
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514. Labels und Symbole
  515.  
  516. Labelnamen  müssen  mit  einem  Buchstaben  oder Underline "_" beginnen.  Alle
  517. Befehle  und  die  Zeichen  "a,x,y" sind reservierte Wörter/Zeichen und können
  518. nicht  als  Label  definiert  werden.   Es wird zwischen Groß und Kleinschrift
  519. unterschieden.   Die maximale Länge eines Labelnamens ist nur durch die Anzahl
  520. der Zeichen pro Zeile begrenzt. Ein Label muß in der ersten Spalte definiert
  521. werden!!
  522.  
  523.  
  524.  
  525. PSO "block":
  526. PSO "bend":
  527. Mit   diesen  PSO`s  steht  Ihnen  ein  starkes  Werkzeug  zur  strukturierten
  528. Programmierung  zur  Verfügung.  Alle Labels die zwischen "block"  und  "bend"
  529. vereinbart  werden  sind  auch  nur  innerhalb dieses Blocks bekannt.  Um eine
  530. konsequente  Nutzung  zu  ermöglichen,  können  die  Blöcke  auch geschachtelt
  531. werden.
  532.  
  533.       block
  534. loop  sta $1000,x
  535.       inx
  536.       bne loop
  537.  
  538.       block
  539. loop  sta $1000,x           ;kein double defined
  540.       inx
  541.       bne loop
  542.  
  543.       block
  544. loop  sta $1000,x
  545.       inx
  546.       bne loop
  547.       bend
  548.       bend
  549.       bend
  550.  
  551.  
  552.  
  553. PSO "set":
  554. Mit  diesem  PSO  werden  Variablen definiert.  Variablen sind im Gegenteil zu
  555. Konstanten  und  automatischen  Labels  veränderbar, d.h.  ihnen kann an jeder
  556. beliebigen  Stelle  im  Source ein anderer Wert zugewiesen werden ohne das die
  557. Fehlermeldung  "double  defined" auftritt.
  558. -> var_1 set 10 
  559. Mit dieser Anweisung erhält  das  Symbol "var_1" den Wert 10.  Der angegebene
  560. Wert kann allerdings auch aus einer anderen Variablen oder Konstanten errechnet
  561. werden, wie das folgende Beispiel zeigt.
  562. var_2  set var_1+$0a+10
  563.  
  564. Bei  dieser Kombination würde dem Label "var_2" der Wert 30, (var_1 == 10+$0a+
  565. 10), zugewiesen werden.
  566.  
  567.  
  568.  
  569. PSO "equ":
  570. PSO "=":
  571. Im  Gegensatz  zu  Variablen  sind  Konstanten  nicht veränderbar.  Konstanten
  572. werden durch "equ" oder "=" vereinbart.
  573. konst    equ 10   oder
  574. konst     =  10
  575.  
  576. In diesem Beispiel erhält das Symbol "konst" den Wert 10
  577.  
  578.  
  579. Variablen  und  Konstanten  müßen  vor  Ihrem ersten Einsatz definiert werden,
  580. ansonsten tritt der Fehler "label not defined" im Pass2 auf.
  581.  
  582.  
  583. PSO "org":
  584. PSO "edo":
  585. PSO "sdo":
  586. PSO "elo":
  587. PSO "slo":
  588. Mit  diesen  Pso`s ist es auf  einfache Art und Weise möglich  Aufzählungen zu
  589. definieren.
  590. Mittels  "orq" wird eine Startadresse festgelegt. Nach dieser Anweisung können
  591. mittels "edo" oder "sdo" Labels vereinbart werden. Die aktuelle Aresse wird je-
  592. weils  um den angegebenen  Wert erhöht.  Durch  "edo" wird eine Konstante, mit
  593. "sdo" eine Variable angelegt, siehe auch "equ" / "set".
  594.  
  595.        org   1000     ; Startadresse == 1000
  596. Konst1 edo   1        ; Konst1 erhält den Wert 1000, aktuelle Adr. ist 1000+1
  597. Konst2 edo   9        ; Konst2 erhält den Wert 1001, aktuelle Adr. ist 1001+9
  598. Var1   sdo   10       ; Var1 erhält den Wert 1010, aktuelle Adr. ist 1010+10
  599.  
  600.  
  601. Im Gegensatz zu "edo" und "sdo" wird bei "elo" und "slo" die Adresse herunter-
  602. gezählt. Ansonsten gelten die gleichen Regeln.
  603.  
  604.        org   1000     ; Startadresse == 1000
  605. Konst1 elo   1        ; Konst1 erhält den Wert 1000, aktuelle Adr. ist 1000-1
  606. Konst2 elo   9        ; Konst2 erhält den Wert  999, aktuelle Adr. ist  999-9
  607. Var1   slo   10       ; Var1 erhält den Wert 990, aktuelle Adr. ist 990-10
  608.  
  609.  
  610.  
  611.  
  612. Macros:
  613.  
  614. PSO "macroseg":
  615. PSO "macro":
  616. PSO "endmac":
  617. PSO "hidemac":
  618. PSO "showmac":
  619. Häufig  wird  eine  Funktion  an  verschiedenen  Stellen  im Programm mehrfach
  620. verwendet.  Im Normalfall kann man diese Funktion als Unterprogramm definieren
  621. und  sie dann bei Bedarf mit "jsr xxxx" aufrufen.  Dies ist jedoch nicht immer
  622. möglich,   sei   es   aus   Geschwindigkeitsgründen   oder   weil   sich   die
  623. Parameterübergabe  als zu kompliziert gestaltet.  Hier stellt ein komfortabler
  624. Asembler  dem Benutzer sogenannte Macros zur Verfügung.  Ein Macro muß vor der
  625. ersten  Verwendung  definiert  werden.   Im  folgendem Sourcetext kann es dann
  626. mehrfach  aufgerufen  werden.  Dabei können beliebig viele Parameter übergeben
  627. werden.
  628.  
  629. Definition des Macros "poke":
  630.  
  631. poke  macroseg              ;Beginn der Definition des Macros "poke"
  632.       lda #!2               ;Einsetzen des 2.Parameters
  633.       sta !1                ;dito 1.Parameter
  634.       endmacro              ;Ende der Macrodefinition
  635.  
  636.  
  637. Aufruf des Macros "poke":
  638.  
  639.       ?poke $1000,10        ;Aufruf mit Übergabe von zwei Parametern
  640.  
  641. Das  "?"  kennzeichnet den Einsatz eines Macros.  Trifft der Assembler bei der
  642. Assemblierung auf den Befehl ?poke .., so assembliert er genau die Befehle die
  643. ihm  bei  der  Definition mitgeteilt wurden.  In unserem Beispiel verhält sich
  644. der Assembler so, als ob man ihm folgende Befehle gegeben hätte:
  645.  
  646.       lda #10
  647.       sta $1000
  648.  
  649. Sowohl    "macroseg"   als   auch   "macro"   kennzeichnen   den  Beginn   der
  650. Macrodefinition.  Der Unterschied zwischen den beiden Befehlen zeigt sich erst
  651. beim   Aufruf  eines  Macros.   Ein  mit   "macro"  definiertes  Macro  öffnet
  652. automatisch  einen  Labelblock,  der  bei "endmacro"  wieder geschlossen wird.
  653. Das ist in dem folgenden Beispiel nötig:
  654.  
  655. inc16 macro                 ;Macro zum Erhöhen eines 16-Bit Pointers
  656.       inc !1                ;low-Byte erhöhen
  657.       bne end               ;kein Überlauf, <>0
  658.       inc !1+1              ;hi-Byte erhöhen
  659. end
  660.       endmacro
  661.  
  662.       ?inc16 pointer
  663. bzw.  ?inc16 $79
  664.  
  665. Bei jedem Aufruf von "inc16" muß dem Label "end", das ja intern als Sprungziel
  666. verwendet  wird,  ein  Wert  zugewiesen werden.  Eine Mehrfachdefinition eines
  667. Labels   ist  aber  nur  dann  möglich,  wenn  es  sich  die  Definitionen  in
  668. verschiedenen Blöcken befinden.
  669.  
  670. Bisher  wurde  nur  eine  Zahl  oder  einen  anderer  16-Bit-Wert an ein Macro
  671. übergeben.   Es  besteht  jedoch  auch  die  Möglichkeit  einen  Textstring zu
  672. übergeben,  dadurch  können  Macros  noch universeller eingesetzt werden.  !!!
  673. der  Text  muß  als  letzter  Parameter eingesetzt werden !!!.  Die Syntax der
  674. Textparameterübergabe verdeutlicht das folgende Beispiel:
  675.  
  676. error macro
  677.       ldx #<txt             ;low-Byte
  678.       ldy #>txt             ;high-Byte
  679.       jsr print             ;Text ausgeben
  680.       lda #!1               ;Parameter 1 einsetzen
  681.       jmp error             ;Fehlerbehandlung
  682. txt   null "!2"             ;Textparameter 2 einsetzen, hier "Syntax"
  683.       endmacro
  684.  
  685.       ?error 10,"Syntax"
  686.  
  687.  
  688.  
  689. PSO "hidemac":
  690. PSO "showmac":
  691. Diese  beiden  PSO`s  steuern  die Anzeige eines Macros beim Assemblerlisting.
  692. Bei  jedem  Macroaufruf  werden  Zeilen  erzeugt, auch diese Zeilen werden zur
  693. Kontrolle  ausgegeben.  Ist diese Ausgabe für Sie uninteressant, so können Sie
  694. sie  mit dem PSO "hidemac"  verbieten.  Die Ausgabe kann mit  "showmac" wieder
  695. eingeschaltet werden.
  696.  
  697.  
  698.  
  699.  
  700. arithmetische Ausdrücke:
  701.  
  702. Der   Assembler   kann   während  der  Assemblierung  arithmetische  Ausdrücke
  703. berrechnen.   Eine  Klammerung  ist  in  dieser  Version  des Assemblers nicht
  704. implementiert!!!
  705.  
  706. lda offs-1,y
  707. byte %0101*2,1+2*3         ;ergibt 10, 9
  708.  
  709. Dabei  werden  die  Ausdrücke von links nach rechts (ohne Berücksichtigung der
  710. Punkt-vor-Strich-Regel)  ausgewertet.  Erlaubte Ausdrücke sind Labels, Zahlen,
  711. ASCII-Zeichen und der Programmcounter.
  712.  
  713. Zahlen können in drei Zahlensystemen eingegeben werden:
  714. $ff   Hexadezimal: gekennzeichnet durch ein vorangestelltes "$" Zeichen.
  715. 255   Dezimal
  716. %0101 Binär: gekennzeichnet durch ein vorangestelltes "%" Zeichen.
  717.       Binärzahlen  bestehen  aus  maximal  16  BIT.   Sollten nicht alle BIT`s
  718.       angegeben  worden  sein,  so wird der resultierende Wert von rechts nach
  719.       links ermittelt.
  720.       %10 ergibt 2
  721.       %00000010 ergibt 2
  722. *     Programmcounter: der PC kann in Ausdrücken über das Zeichen "*" verwendet
  723.       werden.
  724.       *= $1000
  725. start equ *+4       ;dem Symbol "start" wird der Wert $1004 zugewiesen.
  726.       word *,*+2    ;PC ablegen
  727.       *= *+10       ;neuer PC = aktueller PC+10
  728.  
  729.  
  730. Rechenzeichen:
  731.  
  732. Die  oben beschriebenen Ausdrücke können mit folgenden Rechenzeichen verknüpft
  733. werden:
  734.  
  735. "+"   Addition
  736. "-"   Subtraktion
  737. "*"   Multiplikation
  738. "/"   Division
  739. "&"   logische AND-Verknüpfung
  740. "|"   logische OR-Verknüpfung
  741. "^"   logische Exclusiv-OR-Verknüpfung
  742. "<"   Ermittelt das low-Byte des gesamten Ausdrucks.
  743. ">"   wie "<", nur wird das high-Byte ermittelt.
  744.  
  745.  
  746. Bedingte Assemblierung:
  747.  
  748. PSO "if":
  749. PSO "ifequ":
  750. PSO "ifpl":
  751. PSO "ifmi":
  752. PSO "ifdef":
  753. PSO "ifndef":
  754. PSO "endif":
  755.  
  756. Diese  PSO`s  dienen der Assemblierung unter bestimmten Voraussetztungen, bzw.
  757. Abruchbedingungen bei Assemblerschleifen.
  758.  
  759. PSO                erfüllt                      nicht erfüllt
  760. -------------------------------------------------------------
  761. if                 <>0 Ergebnis ungleich Null   ==0 gleich Null
  762. ifequ              ==0  "   "   gleich NULL     <>0 ungleich Null
  763. ifpl               >=0  "   "   positiv         < = negativ
  764. ifmi               < 0  "   "   negativ         >=0 positiv
  765. ifdef              wenn Symbol definiert        nicht definiert
  766. ifndef             Symbol nicht  "   "          Symbol definiert
  767.  
  768. Ist die Bedingung erfüllt, wird der folgende Teil normal assembliert.  Ist die
  769. Bedingung  nicht erfüllt, dann wird der folgende Teil des Sourcetextes bis zum
  770. nächsten   "endif"   nicht  assembliert,   d.h.   überlesen.
  771. Achtung: Eine Schachtelung der bedingten Assemblierung ist  möglich. Tritt also
  772. im überlesenen Teil ein "if" auf, so erwartet der Assembler auch  zwei "endif",
  773. bis er die normale Assemblierung fortsetzt.
  774.  
  775. "ifdef"  und  "ifndef"  testen  ob  eine  Variable  oder  Konstante  bereits
  776. definiert wurde.
  777.  
  778. Beispiel:
  779.  
  780. test    = 1
  781.         *=$1000
  782.         if test-1          ;prüft ob "test" <> 1
  783.         endasm             ;dann Ende
  784.         endif              ;sonst normal assemblieren
  785.         .....              ;ab hier wird assembl. wenn "test_if" ==1
  786.  
  787.  
  788.  
  789. Tabellen:
  790.  
  791. PSO "byte":
  792. PSO "dbyte":
  793. PSO "word":
  794. PSO "rta":
  795. PSO "text":
  796. PSO "null":
  797. PSO "shift":
  798. PSO "time":
  799.  
  800. In   jedem   größerem   Maschinenprogramm   werden   außer   dem  eigentlichen
  801. Maschinencode auch Tabellen benötigt.  Tabellen sind Datenbereiche auf die das
  802. Programm  während  seiner  Operationen  zurückgreift.  Sie können z.B.  Texte,
  803. Sprungadressen  oder  voreingestellte Parameter enthalten.  Um solche Tabellen
  804. möglichst    bequem    erstellen    zu    können,    dienen    die   folgenden
  805. Assembleranweisungen.
  806.  
  807.  
  808. PSO "byte":
  809. "byte"  ist  der wichtigste Teil dieser Gruppe.  Mit ihm kann theoretisch jede
  810. Tabelle erzeugen.  Bei der Assemblierung werden die angegebenen Werte Byte für
  811. Byte in den Objectcode aufgenommen.
  812. label = $1000
  813. byte 5,"a"+1,$aa,>label
  814.  
  815. PSO "dbyte":
  816. Im  Gegensatz  zu  "byte"  können mit  "dbyte" direkt 16 BIT Werte aufgenommen
  817. werden.   Die  Werte  werden  im  high/low Format abgelegt.
  818. -> dbyte $1122  oder
  819. -> byte $11,$22
  820.  
  821. PSO "word":
  822. dieser PSO dient zum Ablegen von 16-BIT Adressen in Tabellen.  Die angegebenen
  823. Werte  werden  im  low/high  Format ins Maschinenprogramm übernommen.
  824. print = $fa21  ;Adresse  der  Print Routine
  825. error = $fbca
  826. word    print,error  oder
  827. byte    <print,>print,<error,>error  ; low/high Byte print Routine, dito error
  828.  
  829. PSO "rta":
  830. Häufig  werden  16-BIT  Tabellen  verwendet,  um verschiedene Routinen mittels
  831. einer   Befehlsnummer  anzuspringen.   Ein  beliebter  Programmiertrick:   Die
  832. gewünschte  Befehlsadresse  wird  auf  den Stack "gepushed", um dann mit einem
  833. "rts"  die  gewünschte  Routine  anspringen  zu  können.  dabei müßen Sie aber
  834. beachten, daß der Prozessor die Adresse auf dem Stack beim Ausführen von "rts"
  835. erhöht.   Sie  muß  deshalb  vor  dem  Ablegen  um 1 erniedrigt werden.  Diese
  836. Aufgabe  hat  der  PSO  "rta"  (return adress):
  837.  
  838. jmp_rout    asl a           ;accu enthält Befehlsnummer
  839.             tax             ;Nummer*2 ins x-Register
  840.             lda tab+1,x     ;high Byte der Befehlsadr.-1
  841.             pha             ;auf Stack, vorgetäuschte Rückkehradresse
  842.             lda tab,x       ;low Byte der Befehlsadr.-1
  843.             pha             ;auf Stack
  844.             rts             ;Routine anspringen
  845. tab         rta print,error,exit      ;Tabelle der Befehlsadressen
  846. oder
  847. word print-1,error-1,exit-1
  848. byte <print-1,>print-1,<error-1,>error-1,<exit-1,>exit-1
  849.  
  850.  
  851. PSO "text":
  852. Häufig benötigt man ASCII-Zeichen im Programm.  Sie können mit dem PSO  "text"
  853. auf  einfache Art abgelegt werden.  Bei der Assemblierung wird der angegebenen
  854. Text Byte für Byte in Hex-Werte umgerechnet, und dann an der aktuellen Adresse
  855. abgelegt.  Der Textstring muß in Anführungszeichen (") stehen.
  856.  
  857. -> text "1234"
  858. oder
  859. -> byte  49,50,51,52
  860.  
  861. Das Anführungszeichen selbst wird durch Voranstellen des Zeichens `\` in einen
  862. Textstring  aufgenommen.   Beispiel:
  863. -> text   "\"dieser  Text steht zwischen 2 Anf.zeichen\"".
  864.  
  865.  
  866.  
  867. PSO "null":
  868. hat  dieselbe  Bedeutung  wie  "text",  jedoch  wird  dem angegebenen Text ein
  869. Null-Byte als Endekennzeichnung angehängt.
  870.  
  871. -> null "1234"
  872. oder
  873. -> text "1234"
  874.    byte 0
  875. oder
  876.    byte 49,50,51,52,0
  877.  
  878.  
  879.  
  880. PSO "shift":
  881. Bei "null"  wird  davon ausgegangen, daß Sie ein Null-Byte als Endekennzeichen
  882. der  Texte  verwenden.   Eine andere Möglichkeit ist, beim letztem Zeichen der
  883. Zeichenkette  BIT 7 zu setzen.  Das ist natürlich nur sinnvoll, wenn die Codes
  884. aller verwendeten Zeichen kleiner als 128 ($80) sind.
  885.  
  886. ->  shift "1234"
  887. oder
  888.     byte 49,50,51,52|$80       ;"|" = or, ist das gleiche wie 52+$80
  889.  
  890.  
  891. PSO "time":
  892. Das   aktuelle  Datum  bzw.   die  Zeit  werden  zum  Assemblierzeitpunkt  ins
  893. Object-File  aufgenommen.   Wird  "time"  ohne  Parameter  angegeben  wird ein
  894. String  im  folgendem  Format  erzeugt:
  895. Fri Jun 30 18:43:43 1989
  896. -> time oder
  897. -> time s
  898. Der Parameter "s" erzeugt den selben String.
  899.  
  900. Sie   haben   jedoch   auch   die  Möglichkeit  den  Zeitstring  nach  eigenen
  901. Vorstellungen  zu  erstellen.  Dazu übergeben Sie den entsprechenden Parameter
  902. beim  Einsatz  von "time":
  903.  
  904.  time weekdaye  ;Wochentag, englische Schreibweise (Mon-Sun)
  905.  time weekdayg  ;dito, deutsch (Mo-So)
  906.  time year      ;1989-????
  907.  time monthe    ;Monat, englisch (Jan-Dez)
  908.  time monthg    ;Monat, deutsch (Jan-Dez)
  909.  time month     ;Monat  als  Zahl  (01-12)
  910.  time day       ;Tag (01-31)
  911.  time hour      ;Stunde (00-23)
  912.  time min       ;Minute (00-59)
  913.  time sec       ;Sekunde (00-59)
  914.  
  915. folgendes Beispiel soll dieses näher erklären:
  916.  time weekdayg
  917.  byte " "
  918.  time day
  919.  byte "."
  920.  time monthg
  921.  byte " "
  922.  time year
  923.  
  924. angenommen Sie assemblieren am Montag den 28.05.1989, so wird folgender String
  925. erzeugt:  "Mo 28.Mai 1989"
  926.  
  927.  
  928.  
  929. Assemblerschleifen:
  930.  
  931.  
  932. PSO "assloop":
  933. PSO "assend":
  934. Manchmal  hat  man  ein  Problem zu lösen, dessen Abarbeitung so schnell gehen
  935. muß,  daß man keine bedingte Maschinenspracheschleife verwenden kann, die über
  936. einen  Zähler  das  Ende der Abarbeitung abfragt.  Es bleibt einem dann nichts
  937. anderes  übrig  als  die  benötigten  Befehle  x-mal  ins Maschinenprogramm zu
  938. schreiben.    Diese   Arbeit   kann   Ihnen   der   Assembler  mit  Hilfe  der
  939. Assemblerschleifen  erleichtern.   Mit  Ihnen  ist  es möglich, eine bestimmte
  940. Routine beliebig oft zu assemblieren.
  941.  
  942. z.B. kopieren eines Speicherbereichs:
  943. Die  Befehle  zwischen  "assloop"   und  "assend"  werden  5x ins  Object-File
  944. geschrieben.
  945.  
  946.          *= $2000
  947. counter  set 5
  948.          ldx #00
  949.          sei                 ;Interrupt abschalten
  950.  
  951.          assloop             ;Beginn der Assemblerschleife
  952.          lda $7000,x         ;Byte holen
  953.          sta $8000,x         ;und ablegen
  954.          inx
  955. counter  set counter-1       ;counter erniedrigen
  956.          if counter          ;counter ungleich Null?
  957.          assend              ;ja, weiter bei .assloop
  958.          endif               ;counter ist Null
  959.          cli                 ;Ende der Schleife wenn counter = Null
  960.          ...                 ;weitere Befehle
  961.  
  962.  
  963.  
  964.  
  965.  
  966. Aufruf des Assemblers:
  967.  
  968.  
  969. Der Assembler startet bei Eingabe der folgenden Befehlszeile:
  970.  
  971.      as65 filename [-optionen]
  972.  
  973. Wobei  "filename" der Name des Files ist, welches assembliert werden soll, und
  974. [-optionen]   wahlfreie   Parameter   spezifizieren.    Die  Parameter  können
  975. kombiniert  werden.  Der Assembler ließt Assembler Quell-Anweisungen der 65`er
  976. Prozessorfamilie  aus einem Input File, schreibt den übersetzen Object-Code in
  977. ein  Output  File,  und  erzeugt  auf Wunsch ein Listing.  Stößt der Assembler
  978. während  der  Assemblierung auf eine Include-Anweisung, fügt er Assembler-Code
  979. von anderen Files hinzu.  Der Name des Quell-Files, welches dem Assembler beim
  980. Aufruf  übergeben  wird,  muß die Endung ".asm" haben.  Ist keine Endung, oder
  981. eine  von  ".asm"  abweichende angegeben, wird ".asm" vom Assembler angehängt.
  982. "Include"-Filenamen sind frei wählbar.
  983.  
  984. Aufruf des Assemblers mit Übergabe des Source-Files:
  985.  
  986. as65 test.asm  oder  as65 test
  987.  
  988. Der  Object-Code,  den der Assembler produziert, wird in ein File geschrieben.
  989. Der  Filename  wird  vom  Input-File  abgeleitet.   Die  Endung ändert sich zu
  990. ".obj".  Das File wird, wenn nicht anders angegeben, in das aktuelle Directory
  991. geschrieben.
  992.  
  993.  
  994.  
  995.  
  996. mögliche Parameter:
  997.  
  998. -w     WARNINGS werden unterdrückt
  999. -p     der Programmcounter wird während der Assemblierung nicht angezeigt
  1000. -P     der PC wird während der Assemblierung angezeigt
  1001. -f     maximale Assembliergeschwindigkeit
  1002. -a     neben dem Object-File erzeugt der Assembler ein ASCII-File
  1003. -s     die Symboltabelle wird auf dem Screen angezeigt
  1004. -S     die Symboltabelle wird in ein File geschrieben
  1005. -l     der Assembler erzeugt ein Listing, dieses wird auf dem Screen angezeigt
  1006. -L     der Assembler erzeugt ein Listing-File
  1007. -e     alle Fehlermeldungen werden in ein File umgeleitet, keine Anzeige auf
  1008.        dem Screen
  1009. -E     dito, die Fehlermeldungen werden jedoch auch auf dem Screen angezeigt
  1010. -i     Pfad für includes
  1011. -I     extra Informationen während der Assemblierung
  1012. -D     Konstante definieren
  1013. -d`name`   Default-Einstellungen nachladen
  1014. -o`name`   Filename für die vom Assembler erzeugten Files
  1015.  
  1016.  
  1017.  
  1018.  
  1019. Assembler Optionen
  1020.  
  1021. Option -w:
  1022. Mit   der  option  -w  werden  alle  WARNINGS  unterdrückt.   Siehe  auch  PSO
  1023. "warnoff".
  1024.  
  1025.  
  1026. Option -p:
  1027. Option -P:
  1028. Normalerweise    wird    während    des    Assembliervorgangs   der   aktuelle
  1029. Programmcounter,  die  Adresse  an  der  sich  der Assembler befindet, auf dem
  1030. Screen  angezeigt.  Mit der Option "-p" schalten Sie diese Anzeige aus.  Haben
  1031. Sie  in  Ihrem  Quell-File  den  PC durch den PSO  "showpc off" ausgeschaltet,
  1032. können  Sie  die  Anzeige  durch  die  Option  "-P" erreichen.  siehe auch PSO
  1033. "showpc".
  1034.  
  1035.  
  1036. Option -f:
  1037. Mit  dieser Option schaltet der Asembler auf maximale Geschwindigkeit um.  Die
  1038. Anzeige  des  Programmcounters  wird  unterdrückt, es wird nur das Object-File
  1039. erzeugt,  das  Outputdirectory  wird  auf  "RAM:"  gesetzt.   siehe  auch  PSO
  1040. "fspeed".
  1041.  
  1042.  
  1043. Option -a:
  1044. Der  Assembler erzeugt neben dem Object-File, welches binär vorliegt, auch ein
  1045. ASCII-File.   Der  Name  wird vom Quell-File abgeleitet, hat jedoch die Endung
  1046. "asc".  siehe auch PSO "ascii".
  1047.  
  1048.  
  1049. Option -s:
  1050. Option -S:
  1051. Die  Symboltabelle wird mit der Option "-s" auf dem Screen ausgegeben.  Wollen
  1052. Sie die Tabelle in ein File schreiben lassen, so benutzen Sie die Option "-S".
  1053. Das erzeugte File erhält die Endung ".sym".  siehe auch PSO "showsym".
  1054.  
  1055.  
  1056. Option -l:
  1057. Option -L:
  1058. Wird  die  Option "-L" angegeben, erzeugt der Assembler ein Listing File.  Der
  1059. Name  des  Listing Files wird wieder vom Input-File abgeleitet, jedoch mit der
  1060. Endung  ".lst".  Neben der Adresse zeigt das Listing-File die Quellangaben und
  1061. deren  Äquivalent  in  Maschienensprache  an.   Mit der Option "-l" leiten Sie
  1062. diese  Ausgabe  auf  den  Screen um, es wird kein Listing-file erzeugt.  siehe
  1063. auch PSO "liston"
  1064.  
  1065.  
  1066. Option -e:
  1067. Option -E:
  1068. Im Normalfall werden die Fehlermeldungen, die bei der Assemblierung auftreten,
  1069. auf dem Screen angezeigt.  Mit der Option "-e" leiten Sie diese Anzeige in ein
  1070. File  um.   Das so erzeugte File trägt die Endung ".err".  Mit der option "-E"
  1071. erzeugt  der  Assembler  ebenfalls  ein Error-File, die Anzeige auf dem Screen
  1072. wird jedoch nicht unterdrückt.
  1073. siehe auch PSO "error".
  1074.  
  1075.  
  1076. Option -i:
  1077. Mittels "-i Pfad" wird angegeben in welchen Directorys der Assembler nach 
  1078. include Files (PSO include) suchen soll.
  1079.  
  1080.  
  1081. Option -I:
  1082. Während der Assemblierung werden extra Informationen ausgegeben.
  1083.  
  1084.  
  1085. Option -D:
  1086. Ein Symbol kann definiert werden. "-D Symbol=10" Die Konstante "Symbol" wird
  1087. angelegt und erhält den Wert 10. Diese Konstante ist dann im Source benutzbar.
  1088.  
  1089.  
  1090. Option -d:
  1091. Mit dem mitgelieferten Utility "makedef" können Sie Default-Files nach eigenen
  1092. Wünschen  erstellen.   Alle bisher besprochenen Optionen werden in diesem File
  1093. abgelegt.   Mit  der Option "-d" wird nun dieses File nachgeladen, so das sich
  1094. die  Parameterübergabe wesentlich vereinfacht.  Wird hinter "-d" kein Filename
  1095. angegeben,  so  werden die Einstellungen aus dem File "as65.def" geladen.  Der
  1096. Filename muß in Hochkomma gefasst sein:
  1097. -d `filename`.
  1098.  
  1099.  
  1100.  
  1101. Option -o:
  1102. In  der  Standarteinstellung  werden  alle  vom  Assembler erzeugten Files vom
  1103. Source-Filenamen,   welcher   dem   Assembler   beim  Aufruf  übergeben  wird,
  1104. abgeleitet.   Mit  dieser  Option  können  Sie den Assembler veranlassen diese
  1105. Files  von  Ihrem angegebenen Namen abzuleiten.  Der Filename muß in Hochkomma
  1106. gefasst sein:  `filename`.  as65 test.asm -o`my_name`
  1107.  
  1108.  
  1109.  
  1110. Ein   Beispiel   soll   die  bisher  besprochenen  Optionen  näher  erläutern:
  1111. Angenommen  Sie wollen ein ASCII-File erzeugen, die Symboltabelle soll auf dem
  1112. Screen angezeigt und in ein File geschrieben werden, Fehlermeldungen sollen in
  1113. ein  File  umgeleitet  werden und  alle vom Assembler erzeugten Files sollen
  1114. von "my_name" abgeleitet werden, so gestaltet sich die Parameterübergabe wie
  1115. folgt:
  1116.  
  1117. as65 test.asm -asSeo`my_name`
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123. Utilitys
  1124.  
  1125. ShowOpc:
  1126.  
  1127. Mit    dem    mitgelieferten    Programm   ShowOpc   können   Sie   sich   die
  1128. Prozessorspezifischen  Befehle  und  die  der  Adressierungsart entsprechenden
  1129. Hex-Werte anzeigen lassen.  Wollen Sie sich z.B.  über den R65C02 informieren,
  1130. geben  Sie ShowOpc R65C02 ein.  Danach erscheint eine Liste der auf dieser CPU
  1131. benutzbaren  Befehle.   Geben  Sie nur den Programmnamen, ShowOpc, ohne Angabe
  1132. eines Prozessors, erhalten Sie eine Liste der möglichen Prozessortypen.  Durch
  1133. den  Parameter  "all"  der  dem  Programmnamen  folgt,  können  Sie  sich alle
  1134. implementierten Prozessortypen der Reihe nach angezeigen lassen.
  1135.  
  1136.  
  1137.  
  1138. MakeDef:
  1139.  
  1140. Mit  diesem  Programm  können  Sie  sich  ein auf Ihre Wünsche zugeschnittenes
  1141. Default-File  erstellen.   In  diesem  File  werden sämtliche Voreinstellungen
  1142. abgespeichert.   Das  so  erstellte  File  wird  mit  der  Option -d'name' vom
  1143. Assembler  geladen,  wodurch  eine  umfangreiche  Parameterübergabe nicht mehr
  1144. notwendig ist.
  1145.  
  1146.  
  1147.  
  1148. Folgt  dem  Programmaufruf  kein  Filename,  wird  das File "as65.def" benutzt.
  1149.  
  1150. MakeDef Test
  1151.  
  1152. Erzeugt ein Default-File im aktuellen Directory mit dem Namen "Test".
  1153. Dieses Prg. sollte nach Möglichkeit nicht benutzt werden. Es ist nur noch
  1154. der Vollständigkeit halber dabei !!
  1155.  
  1156.  
  1157.  
  1158.  
  1159. Convert:
  1160.  
  1161. Mit  diesem Programm wird ein File im MOTOROLA S-RECORD Format erzeugt.  Input
  1162. ist  ein maximal 64kB großes binär File.  Das so erzeugte ASCII-File kann dann
  1163. z.B.  zu einem Eprommer geschickt werden.
  1164.  
  1165. convert binär_file
  1166.  
  1167.