Diskussion:INST

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Bug-Behebung[Quelltext bearbeiten]

Sind beide beachtenswerte Dinge bei TSB behoben oder nur der zweite (wie momentan dargestellt)? --JohannKlasek (Diskussion) 03:36, 10. Feb. 2020 (CET)

Beide! :-) --GoDot (Diskussion) 08:59, 10. Feb. 2020 (CET)

Beschreibung oder Ausgabe Beispielprogramm falsch[Quelltext bearbeiten]

Entweder ist die Beschreibung des INST-Befehls falsch oder das Ergebnis des Beispiel-Programms. Ich tendiere dazu, daß die Ausgabe des Beispielprogramms falsch ist. INST überschreibt eine Zeichenkette (zweites Argument) ab einer angegebenen Position (drittes Argument) mit einer Zeichenkette (erstes Argument). Die Länge der Zeichenkette ändert sich nicht. Meinem Verständnis nach müßte die Ausgabe des Beispielprogamms "vorhname" sein.

Nein, das Ergebnis ist so wie angegeben. Du musst das führende Space in a$ beachten! --GoDot (Diskussion) 21:36, 3. Aug. 2021 (CEST)
Also mit aktuellem TSB 2021-05-23 probiert, zeigt sich doch ein seltsames Verhalten - ein Bug?
10 v$="1234"
20 n$="abcdefgh"
30 r$=inst(v$,n$,0)
100 print ">"r$"<",len(r$)
110 fori=1tolen(r$):printasc(mid$(r$,i,1)+chr$(0));:next
erwarten würde ich in r$ "1234efgh" ...
run
>efgh<      8
 0  15  8  10  69  70  71  72
ready.
Der Ergebnisstring ist zwar 8 Zeichen lang, es werden auch die ersten 4 Zeichen ersetzt, aber es sind nicht die aus v$, sondern Codes aus dem Steuerzeichenbereich! Wo auch immer die her sind ...
Mach' oder versteh' ich da was falsch?
--JohannKlasek (Diskussion) 16:40, 9. Aug. 2021 (CEST)


Dies hier ist mein Ergebnis mit dem gleichen Code (und TSB 2.10718, aktueller Download):
>1234efgh<           8
 49  50  51  52  69  70  71  72

dump

v$="1234"
n$="abcdefgh"
r$="1234efgh"
i= 9
Würde sagen, das ist das, was du erwartet hast (und ich auch) ;-) --GoDot (Diskussion) 21:26, 9. Aug. 2021 (CEST)
Hab's gefunden: Wenn man vorher INST aufruft, dann ist das zu beobachten, was ich zuvor angemerkt habe. D.h. mit "installiertem" DOS-Wedge gibt es bei der INST()-Funktion diese Nebenwirkungen. Sollte man damit rechnen oder ist die Kombination eher undenkbar bzw. zu vermeiden?
Ich bin so hineingeschlittert, weil ich statt r$=INST(... die Zuweisung vergessen hatte. Also wurde INST aufgerufen (ich kannte mich überhaupt nicht mehr aus, was da nun mit der Disk passiert ...). Seit dem war der Zustand von INST() anscheinend irreversibel ... irgendwie beschleicht mich der Eindruck, dass es keine gute Idee war, das INST-Token mit zwei Bedeutungen zu überladen. ;) --JohannKlasek (Diskussion) 22:25, 9. Aug. 2021 (CEST)


Ah!!! Du bist auf einen Bug gestoßen! Die INST-Funktion benutzt eine Speicherstelle, die im DOS Wedge beim Auswerten des BASIC-Texts ebenfalls (als Zwischenspeicher) verwendet wird! (Die DOS Wedge verbiegt CHRGET, daher rührt der Fehler!) Ich werde umgehend "tsb.ext" ändern (das ist die TSB DOS Wedge)! Muss nur an drei Stellen gepatcht werden: $ccf6, $cd07 und $cd1d, alle auf den Wert $b1 (diese Speicherstelle ist unverfänglich). Danke dir für deine Aufmerksamkeit!!! --GoDot (Diskussion) 23:38, 9. Aug. 2021 (CEST)