C 64
Tips und Tricks

Ergänzungen zu Hypra-Ass

Durch diese Ergänzung kann Hypra-Ass bedingte Verzweigungen in vollem Umfang bearbeiten. Das war bisher nicht möglich.

Wollte man zum Beispiel die Befehlsfolge LBL BCC LBL assemblieren, meldete der Assembler einen »branch too far«-Error. Alle bedingten Verzweigungen, wie BCC, BCS, BNE bei denen auf das eigene Befehls-Byte verzweigt wurde, funktionierten nicht. Befehlsfolgen beziehungsweise Warteschleifen dieser Art werden zum Beispiel vom DOS sehr intensiv genutzt. Sie bewirken, daß so lange gewartet wird, bis die Interrupt-Routine das Carry-Bit im Prozessor-Statusregister setzt.

Nachdem ein Quelltext geändert wurde, konnte es passieren, daß Hypra-Ass undefinierte Zeilen an das Quelltextende setzte. Dieses eigenmächtige Handeln von Hypra-Ass kam zwar sehr selten vor, hatte aber fatale Auswirkungen. Denn der Assembler quittierte jeden Versuch, den Quelltext zu übersetzen, mit einer Fehlermeldung. Leider ließen sich die überflüssigen Zeilen auch nicht mehr löschen, so daß man in einigen Fällen gezwungen war, den gesamten Quelltext neu einzugeben.

Die nun folgende Ergänzung beseitigt auch diese, für viele Leser sicherlich unangenehme Eigenschaft.

Bevor Sie jetzt anfangen, das Quelltextlisting abzutippen, muß zuerst Hypra-Ass geladen und gestartet werden. Vergessen Sie beim Abtippen nicht das Minuszeichen nach jeder Zeilennummer und das Leerzeichen für Maschinenbefehle hinter dem Minuszeichen. Haben Sie den Quelltext abgetippt, ist Hypra-Ass wie gewohnt mit RUN zu starten. Beim Assemblieren korrigiert sich Hypra-Ass automatisch. Mit SYS 49152 wird die neue Hypra-Ass Version unter dem Namen »Hypra-Ass+« auf Diskette gespeichert.

(Gert Möllmann/ah)
100  -; Old-Befehl berichtigen:
110  -;
120  -.ba $1f3c
130  -          sec
140  -;
150  -; Branch auf der Stelle erlauben
160  -; ( label  beq label):
170  -;
180  -.ba $d33
190  -;
200  -          lda $3c
210  -          sec
220  -          sbc $fb
230  -          tax
240  -          lda $3d
250  -          sbc $fc
260  -          tay
270  -          txa
280  -          sbc #2
290  -          sta $3c
300  -          .by $b0,1
310  -          dey
320  -;
330  -br1       cpy #0
340  -          .by $f0,16
350  -          iny
360  -          .by $d0,18
370  -          cmp #$80
380  -          .by $90,14
390  -          inc $3c
400  -          cmp #$fe
410  -          .by $90,2
420  -          dec $3c
430  -br3       rts
440  -;
450  -br2       cmp #$80
460  -          .by $b0,1
470  -          rts
480  -;
490  -error     lda #5
500  -          jmp $a7f
510  -;
520  -;
530  -;
540  -; Um die geaenderte Version neu
550  -; abzuspeichern ist folgender
560  -; Quelltext geeignet:
570  -;
580  -.ba $c000
590  -;
600  -.eq sourcestart = $1fd8
610  -.eq namlen      = 10
620  -;
630  -          lda #1
640  -          ldx #8
650  -          sta $fe
660  -          stx $ff
670  -          lda #8
680  -          jsr $ffba
690  -          lda #namlen
700  -          ldx #<(name)
710  -          ldy #>(name)
720  -          jsr $ffbd
730  -          lda #$fe
740  -          ldx #<(sourcestart)
750  -          ldy #>(sourcestart)
760  -          jmp $ffd8
770  -;
780  -name      .tx "hypra-ass+"
790  -;
800  -; Durch sys $c000 wird der ge-
810  -; aenderte Assembler auf Disk
820  -; abgespeichert
Quelltextlisting zur Hypra-Ass-Ergänzung
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →