Fehler im Code

Es gibt 15 Antworten in diesem Thema, welches 2.534 mal aufgerufen wurde. Der letzte Beitrag (8. Februar 2017 um 07:30) ist von Pusti64.

  • Diese Routine sollte in ein GeoWrite-File z.B. "Test Text" ausgeben.
    Gibt aber das hier aus.
    "Test Text
    "xt"
    Wo liegt mein Fehler bzw. was müsste ich ändern?Bitte melde dich an, um diesen Anhang zu sehen.

  • Du hast da ja zwei Bedingungen drin:

    Im ersten Fall über den Zähler "ldx r11L". Darüber läuft das Programm bis zum "Jmp :1" durch und startet dann ein 2. Mal bei ":1". Erst im zweiten Durchlauf kommt dann die Abfrage auf <32 (vermutlich eine 0) zum Tragen und springt zu ":3". Also etwas doppelt gemoppelt. Wenn du schon mit der Länge 'x' arbeitest könnte der "cmp/bcc Bitte melde dich an, um diesen Link zu sehen." und "Lda r11L" bis "Jmp :1" ganz raus und müsste dann laufen.

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Ja, schon. Aber das BCC vergleicht ja auf <32, springt also nur nach ":3" wenn diese Bedingung erfüllt ist (was zunächst nicht passiert). Hinter dem "xt" wird im Speicher zufällig irgendwas kleiner 32 stehen.

    Also:

    Entweder ist die Länge schon vorher bekannt, dann mit der x-Schleife

    Oder: Die x-Schleife raus und auf <32 im Textspeicher warten (also den Text so ablegen: ' Test Text,0 ')

    "r11L" muss anscheinend ja auch zwischendurch verändert werden (also bei $1c96).

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Über den Akkuwert wird 1c96 mitgeteilt wieviel Zeichen das Programm ausgegebenen hat.
    Also ich habe z.B. von $134a an nun 5 Zeichen ausgeben und bin nun bei $134f. Wo z.B. kein Text mehr steht, weil $134e das Textende also eine Null war. Der Text hätte aber auch bis $21e4 gehen können.
    Alles was kleiner als Bitte melde dich an, um diesen Link zu sehen. ist sind Steuerzeichen wie z.B. PLAINTEXT & BOLDON und werden mit einer anderen Routine ausgewertet bzw. dargestellt. Also muss ich cmp 32 bcc schon an dieser Stelle lassen.
    Grübel ....

  • Du könntest doch nach dem 'iny' zurück zum 'lda (a0l),y' springen um nicht jedes Zeichen einzeln auszugeben. Dann bei ':2' tya / jsr $1103 etc.

    Vorausgesetzt, es können nie mehr als 256 Zeichen werden, bevor ein Steuerzeichen kommt (wegen y).

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Gerne :) .

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Würde es dann so ändern.
    ......
    Ldy #0
    ::1
    Lda (a0l),y
    Cmp Bitte melde dich an, um diesen Link zu sehen.
    Bcc :2
    Sta (a1l),y
    Iny
    Jmp :1
    ::2
    lda Bitte melde dich an, um diesen Link zu sehen.
    sta (a1l),y
    Tya
    sta :3+1
    jsr $1103
    jsr $1106
    ::3
    lda Bitte melde dich an, um diesen Link zu sehen.
    jmp $1c96

  • So sollte es richtig sein. ;)

    Ldy #0
    ::1
    Lda (a0l),y
    Cmp Bitte melde dich an, um diesen Link zu sehen.
    Bcc :2
    Sta (a1l),y
    Sty :3+1
    Iny
    Jmp :1
    ::2
    lda Bitte melde dich an, um diesen Link zu sehen.
    sta (a1l),y
    Tya
    jsr $1103
    jsr $1106
    ::3
    lda Bitte melde dich an, um diesen Link zu sehen.
    jmp $1c96

  • Gut, aber was ich nicht verstehe: $1103 zählt ja wohl schon 'a1L' hoch. Wofür braucht $1c96 nochmal den Y-Wert? Wird da'a0L' erhöht? Wird wohl.

    Sieht jedenfalls gut aus 8o !

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • a0l ist der Adressenzähler also z.B. für die Textdaten im Speicher und a1l ist für die Ausgabe im GeoWrite-Dokument.

    Z.B.
    Test_Test_0 steht im Speicher und wird dann "Test_Test_",NULL im Dokument dargestellt. Also 7 Zeichen mehr. Deshalb a0l und a1l. Das Komma und NULL wird aber (cmp Bitte melde dich an, um diesen Link zu sehen.) mit einer anderen Routine ausgegeben.

  • Jedenfalls sehr interessant. Wusste bislang gar nicht, dass man so in GEOS (bzw. GeoWrite) reingrätschen kann. Bin aber auch ziemlicher GEOS-Noob.

    Wie/wo wird denn dieser Code an GEOS übergeben? :nixwiss:

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Ist viel einfacher als gedacht.
    Das Programm legt auf dem gewünschten Laufwerk einfach ein leeres GeoWrite-Dokument an. Darin wird dann der umgewandelte Code als Text abgelegt.
    Nach 67 Zeilen wird die nächste Seite (VLIR-Datensatz) angelegt und nach maximal 61 Seiten (Datensätzen) ein weiteres Dokument erstellt. Unterm Strich wird also ein File mit VLIR-Datensätzen angelegt welche dann halt mit Daten befüllt werden.

    Wie man ein GW-File bzw VLIR-Datensätze anlegt ist z.B. in dem Buch Geos Mega-Assembler gut beschrieben. Sollte sicherlich hier in der Wolke zu finden sein.