BIF:
Stimmt, ich hatte es nicht getestet, da ich wenig Zeit gehabt hab und nur so - wie gesagt - schnell was herumgefrickelt hatte. Dabei hatte ich die Pokes verwechselt. Tja... besser immer noch mal testen, bevor man etwas veröffentlicht. ![]()
Assembler-Programme in Basic
-
BIF -
16. März 2015 um 17:53 -
Erledigt
Es gibt 84 Antworten in diesem Thema, welches 17.373 mal aufgerufen wurde. Der letzte Beitrag (
-
-
Mike:
Mein Programm funktioniert im Prinzip, allerdings muß man das a$ durch einen print-Code ersetzen, der den Bildschirmcode 96 = rts erzeugt:
Dein Programm ist offenbar ein Maschinencode, was man am sys erkennt.
Was der macht, müßt ich mal testen.Schönen Gruß.
-
-
Mike:
Hab ich mal versucht abzutippen, leider unterstützt meine Schmal-Tastatur nicht alle Zeichen, wie z.B. das Pfundzeichen, wie ich feststellen mußte.
Hab gerade festgestellt, daß die Tasten woanders sind.Dafür hab ich mal Hexworx Code geladen, der im Interrupt die Rahmenfarbe flackern läßt.
Schönen Gruß.
-
Mike:
Ich hab´s abgetippt. Aber außer das String-printen macht das Programm leider noch nichts.
Entweder ich hab einen Abtipp-Fehler oder es ist ein Fehler im Listing drin.
Eine Download-Datei wär da auch nicht schlecht.
Was macht denn das Programm?Schönen Gruß.
-
Mike:
Da muß ich mal Fragen, ob das Zeichen in der ersten Zeile deines Listings ein Q ist ?
Sieht zwar einem Q ähnlich, scheint es aber nicht zu sein ?Schönen Gruß.
-
Zitat von BIF
Sieht zwar einem Q ähnlich, scheint es aber nicht zu sein?
Ich kann jetzt zwar nicht wissen, wie die von dir verwendete Kombination aus Rechner, Betriebssystem, Browser und Bildschirmsichtgerät den Quellcode darstellt, es ist aber ein Q.ZitatEine Download-Datei wär da auch nicht schlecht. Was macht denn das Programm?
Also, bitte. Die paar Zeichen fehlerfrei einzugeben sollte doch nicht so schwer fallen.Es *könnte* im übrigen ja auch mit der Funktion zusammenhängen, daß die Zeile im Direktmodus eingegeben werden soll.
-
Also, ich hab´s bis jetzt nicht hinbekommen.
Außer den String zu printen macht das Programm bislang noch nichts.
Woran es liegt? Keine Ahnung.Schönen Gruß.
-
Mach' mal LIST. Vielleicht kommt dann zufällig was.
Hab' den Screencode mal rangehängt. Kann man ja mal gebrauchen.
-
Hexworx:
Ich hab das Programm runtergeladen und dann mit sys1024 ausgeführt.
Ein List ergibt die Basiczeile 65535 und einige Pi´s .
Das ist, was ich bislang feststellen konnte.
Für weitere Aussagen müßte man wohl den MC-Code analysieren.Schönen Gruß.
-
Es ist im Grunde ganz simpel (korrigiere mich bitte jemand, falls ich die eine andere Aktion im ROM misinterpretiere):
Code.C:0400 A9 01 LDA #$01 ; Basic-Startadresse .C:0402 A8 TAY ; auf $0801 .C:0403 91 2B STA ($2B),Y ; setzen und .C:0405 20 33 A5 JSR $A533 ; neue Zeile erzeugen. .C:0408 8A TXA .C:0409 69 02 ADC #$02 ; Adresse für nächste .C:040b 85 2D STA $2D ; Zeile bzw. Variablen .C:040d A5 23 LDA $23 ; ermitteln .C:040f 20 55 A6 JSR $A655 ; und setzen. .C:0412 4C 74 A4 JMP $A474 ; "READY."Alles was dieser kleine Code tut, ist eine leere Basiczeile zu erzeugen. Mehr nicht:
-
-
das ist ein UNnew und daher auch sinnig als screencode natuerlich.
-
Nö.

Ach, ich hatte mich schon über den Dateinamen gewundert. Alles klar!

-
Zitat von »Hexworx«
old.prgAch, ich hatte mich schon über den Dateinamen gewundert. Alles klar!
Quatsch. Das ist nur 'ne alte Datei
. -
Äh, ja, ohne Erklärung nicht unbedingt einfach zu durchschauen.
Ich hatte früher einmal ein Programm, daß AUTOOLD hieß, ich glaub, daß konnte man mit ,8,1 laden und hat dann ein gelöschtes Basic-PRG wiederhergestellt.
In Basic gibt es da glaub ich auch einen Einzeiler, der mit dem BIND-Systemprogramm arbeitet.
Wenn man das ein wenig modifiziert kann man auch die Endadresse eines Basic-Programms ermitteln.Schönen Gruß.
-
Zitat von BIF
Äh, ja, ohne Erklärung nicht unbedingt einfach zu durchschauen.
Eingeben des Einzeilers mit PRINT und SYS: 1 Minute.Sich wundern, warum "nichts" passiert: 10 Sekunden.
(Falls im Emulator ausprobiert:) Start des Monitors und disassemblieren des Codes ab $0400: 50 Sekunden.
Nachschlagen dreier Aufrufe in das BASIC-ROM, z.B. in AAY64: 3 Minuten.
Nach spätestens 5 Minuten hat man schlimmstenfalls raus, was das Programm macht. Wenn man weiß, wo man suchen muß.
Ich könnte dazu jetzt noch sagen, daß es vielen hier bei deinen Programmen ähnlich geht, aber:
1. sind deine Programme meistens eh unnütz, was dann glücklicherweise denjenigen die Arbeit des Nachvollziehens erspart, die es könnten,
und
2. hast Du dich ohnehin nur doof gestellt.
...
Ich warte immer noch auf deine Implementierung eines Direkt-Assemblers in BASIC.
-
Das String-Additionsverfahren ist zur Programmierung von Maschinencode wohl am schnellsten und einfachsten umzusetzen,auch wenn man hier nicht die orginal Assembler-Befehle hat.
Selbst einfügen von Modulen und befehlsweise Kommentierung ist damit machbar.
10 :a$=a$+gs$+chr$(.)+chr$(1):rem: sys 256
Schönen Gruß.
-
10 :a$=a$+gs$+chr$(.)+chr$(1):rem: sys 256
Hab's grad mal eingegeben. Da passiert gar nix
. -
Hexworx:
Das war nur ein Syntax-Beispiel.
Um zu zeigen, wie man befehlsweise kommentieren kann.Schönen Gruß.
-