Suchergebnisse

Suchergebnisse 1-20 von insgesamt 539.

  • Wieder sehr interessant zu lesen. Vielen Dank!

  • BMI & BPL prüfen Bit 7 automatisch

    M. J. - - ASM

    Beitrag

    Zitat von DMHas: „Die beiden Befehle BMI & BPL prüfen gesetzen 7 Bit einer Speicherstelle und springen entsprechend “ Nicht BMI und BPL prüfen die Speicherstelle, sondern der vorausgegangene LDA-Befehl setzt/löscht das N-Bit wie auch LDX, LDY und die mathematischen/logischen Befehle ADC, AND usw. vgl. Beschreibung des LDA-Befehls unter "Beeinflusste Flags im Statusregister: Negativ-Flag"

  • Zitat von Superingo: „Könntest Du an dieser Stelle ein D64 verlinken ? “ Die beiden D64-Dateien befinden sich hier: - Test Drive II - O.O.B. Solltest Du die Programme austesten, wäre es nett, wenn Du mir kurz mitteilen könntest, ob der Turbo korrekt aktiviert wird. Danke.

  • Zitat von LogicDeLuxe: „Ansonsten ist mir keine Software bekannt, die wie meine XDC-Engine, den Turbo eigenmächtig aktiviert. “ Mein TestDrive II-Patch sollte den Turbo beim C128, DTV, TC64 und der SCPU automatisch aktivieren, ebenso mein Beitrag zur letzten F64Compo. Da ich leider kein TC64 besitze, kann ich es jedoch nicht verifizieren.

  • BASIC V2 Interpreter/Compiler in/für Java

    M. J. - - Allgemein

    Beitrag

    Zitat von Hoogo: „Aber ich frage mich, wie man aus diesem Befehlssatz einen Branch oder LSR herbeizaubert... “ Auf den zweiten Blick.. Sofern man die Zusatzbefehle nicht emuliert, sondern nur durch eine feste Befehlsfolge ersetzen will, die bei Verwendung des Zusatzbefehls automatisch aufgerufen wird, macht der Befehle FLIP durchaus Sinn, da er dazu benutzt wird, um besagte LSR-Verschiebung zu ermöglichen. Ein LSL erreicht man bekanntlich durch Addition des Operanden auf sich selbst mittels PUSH…

  • BASIC V2 Interpreter/Compiler in/für Java

    M. J. - - Allgemein

    Beitrag

    Zitat von Hoogo: „Aber ich frage mich, wie man aus diesem Befehlssatz einen Branch oder LSR herbeizaubert... “ Unter der Befehlssatzbeschreibung findet sich der Hinweis "Code points 33 to 63 may be emulated by code in vectors 2 through 32:" gefolgt mit einer Liste zusätzlicher Befehle, darunter auch LSR ("LSHIFTRIGHT") und Branch ("EQBRANCH, NEQBRANCH"). Ich finde es allerdings merkwürdig, daß die Bitkombination %00000001 nicht aufgelistet ist. Was der Befehl FLIP im Befehlssatz zu suchen hat, w…

  • Vielen Dank für die ausführliche Erklärung! Nach dem ollen IEEE-Standard wäre das dann ein Bias von $81, nach dem Mac Bacon/C64-Standard aber $80. Dann weiß ich ja bescheid, falls ich wider Erwarten mal in Verlegenheit kommen sollte, Fließkommazahlen im Basic-Format zu erzeugen.

  • Zitat von e2020: „der exponent ist in excesscode, “ Ja, genau: "Im IEEE-754-Standard zur Darstellung von Gleitkommazahlen wird der Exponent in einer Exzesscode-ähnlichen Form kodiert." Wird auch vom Basic benutzt, jedoch in einer zum IEEE-Standard abgewandelten Form, die mich ein wenig verwirrt hat. Zitat von Mac Bacon: „Evtl. hilft dies? “ @Mac Bacon: Eine Frage hierzu: In dem von Dir verlinkten Programmtext steht, daß der Bias $80 beträgt. Im Basic-Rom findet sich nun bei $baf9 der Wert 84 20 …

  • Da Du die Integerzahl nach Fließkomma mittels Verschiebung nach links umgewandelt hast, mußt Du für die Umwandlung von Fließkomma nach Integer den umgekehrten Weg gehen, also nach rechts verschieben. Die Anzahl der Verschiebungen ergibt sich dabei durch Exponent - 127 ($7f), in diesem Falle also 5. Edit: Eine kurze Erklärung für die Addition von 127 ($7f) auf den Exponenten (sogenannte Bias) findet sich hier. Edit: Nope, stimmt so nicht. Microsoft Basic folgt nicht dem IEEE-Standard. Der Bias is…

  • Zitat von e2020: „10000100 00100000 00000000 00000000 00000000 “ Bei dieser Darstellung mußt Du daran denken, daß es sich um die gepackte Darstellung handelt. Dabei wird das höchste Bit der Mantisse (, das immer 1 ist,) weggelassen. Die Mantisse müßte also entpackt lauten: 10000100 0 10100000 00000000 00000000 00000000 jetzt kann man sehen, daß 1010 der verschobene Binärwert von 10(dez) ist. Um von der Integerzahl zur Fließkommadarstellung zu kommen, muß man also die Bits solange verschieben, bi…

  • Zitat von Endurion: „Hehe, klasse Squid! Mach mit! “

  • Anhand dieser knappen Beschreibung (vgl.: "Mein Fernseher ist kaputt. Da ist kein ARD."), wird Dir leider keiner helfen können. Bitte gib noch zusätzlich an: - Unter welchem Betriebssystem läuft der Emulator? - Welche Version verwendest Du? - Welcher Laufwerkstyp wird emuliert (1541, 1541 II, 1581..)? - Um welche Diskette handelt es sich? Vorab ein Hinweis: Es gibt bei einigen Spielen Disketten, bei denen im Diskettenverzeichnis kein Eintrag vorhanden ist, da die Programme aus Geschwindigkeitsgr…

  • Zitat von ZeHa: „es ging mir ganz einfach mal drum, das selbst zu machen, auch um dabei etwas zu lernen “ Zitat von ZeHa: „Irgendwo anders muss da noch der Wurm drin sein... “ Vielleicht hilft dies hier weiter: ADSR-Bug

  • anfänger: lda ($0300,$0301),x oder wie?!

    M. J. - - ASM

    Beitrag

    Ich vermute mal, Du möchtest so etwas wie Quellcode (6 Zeilen)"zeropage" ist hierbei eine beliebige freie Stelle auf der Zeropage in der Größe von 2 Bytes für den Zeiger, den man bei der indirekten Adressierung benötigt. Wichtig: Willst Du ein Register zum Zeiger addieren, geht nur die Adressierung "(zp), y". "(zp, x)" macht etwas anderes, was Du wahrscheinlich nie benötigen wirst mit einer Ausnahme: Wenn X = 0 ist, verhält sich "(zp, x)" identisch zu "(zp), y" (für Y=0) und kann daher zum Einsa…

  • BASIC V2 Interpreter/Compiler in/für Java

    M. J. - - Allgemein

    Beitrag

    Zitat von Hoogo: „Den Teil hab ich jetzt nicht verstanden. Woher die 6? 6 Stacks für verschiedene Zwecke wie Gosub/Return, For/Next, Formeln berechnen u.Ä.? Oder weil der komplizierteste Datentyp auf dem Stack 6 Bytes belegen kann? “ Letzteres. Fließkommazahlen brauchen (entpackt) 6 Bytes. Anstelle diese 6 Bytes nacheinander auf den Stack zu legen Quellcode (10 Zeilen)splittet man den Stack in 6 Teile, was auch gleich die maximale Anzahl an Einträgen erhöht. Quellcode (8 Zeilen)Zitat von Unseen:…

  • Die Indizes sind falsch gewählt. Du legst die Stringzeiger nacheinander im Speicher ab. Jeder Zeiger benötigt 2 Bytes. Du übergibst an die Ausgaberoutine aber Indizes von 0, 1 und 2 anstelle von 0, 2 und 4. Entweder paßt Du die Indizes an oder verdoppelst sie (z. B. per ASL) in der Ausgaberoutine. Quellcode (8 Zeilen)Alternativ kannst Du die Tabelle der Stringzeiger auch aufspalten in eine Tabelle für die Lowadresse und eine Tabelle für die Highadresse. Quellcode (11 Zeilen)

  • BASIC V2 Interpreter/Compiler in/für Java

    M. J. - - Allgemein

    Beitrag

    Zitat von EgonOlsen71: „aber ich orientiere mich doch gar nicht an den 6502 Registern “ Ah, okay, ein Mißverständnis meinerseits. Deine virtuellen Register A, X, Y (und B) heißen nur zufällig so wie die Register des 6502. Im Prinzip verwendest Du also bereits eine Stackmaschine. Zitat von EgonOlsen71: „Super effizient und schlank wird das vermutlich in der Tat nicht sein “ Nun, es wird auf jeden Fall schon mal schneller sein als das normale interpretierte Basic. So viel ist sicher. Beim Kompilie…

  • BASIC V2 Interpreter/Compiler in/für Java

    M. J. - - Allgemein

    Beitrag

    Vielen Dank für die Antwort und Erklärungen! Zitat von EgonOlsen71: „Zeiger auf die Strings “ Leider macht das keinen Unterschied, denn auch die Zeiger (16-Bit-Adressen) können nicht in ein 6502-Register geladen werden (anders als z. B. beim Z80). Im Grunde genommen ist bei der Übertragung einer Hochsprache in 6502-Assembler eine direkte Umsetzung unter Beteiligung der 6502-Register nicht oder nur mit großem Aufwand möglich. Guckt man sich z. B. das Kompilat an, das gcc erzeugt, so sieht man, wi…

  • BASIC V2 Interpreter/Compiler in/für Java

    M. J. - - Allgemein

    Beitrag

    Zitat von Bytebreaker: „Sinus Tabelle “ Welche Sinustabelle meinst Du? Die Werte für SIN() werden berechnet (mittels Taylorreihe beim C64). Zitat von Bytebreaker: „Tangens “ Du verwendest wirklich die Tangensfunktion? Zitat von EgonOlsen71: „das Programm auf dieser Basis in 6502- oder x86-ML oder sonstwas umwandeln “ Ich befürchte so einfach ist das nicht. Zunächst ist das Verhalten der NEXT-Anweisung weiterhin ungeklärt. Ich nehme an, es existiert dafür ein eigener Zwischencode-Befehl und ein e…

  • Nein, andi6510 hat schon recht. So hat man das damals[tm] tatsächlich zumeist gemacht. Erst Turboloader laden und dann das eigentliche Programm. Möchte man einem Programm den Turboloader voranstellen, so wird der so geladen, daß beim Laden wichtige Vektoren überschrieben werden, so daß entweder direkt beim Laden oder nach Beendigung nicht ins Basic zurückgekehrt, sondern direkt der Lader angesprungen wird. Das bedeutet: Der Lader selbst ist auf herkömmliche Weise gespeichert und wird noch ganz n…