Suchergebnisse

Suchergebnisse 1-20 von insgesamt 533.

  • 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…

  • !text Großß'/Kleinschrift in ACME

    M. J. - - ASM

    Beitrag

    Mac Bacon hat recht. Die Umrechnungsroutine funktioniert leider ohne zusätzliches ROL nicht. Von den drei Bits, die nach links hinausgeschoben werden (%11100000), wird nur das letzte berücksichtigt, also: %00100000. Diese Stelle entspricht dem Wert 32 = $20. "D" im Screencode ist jedoch $44 = %01000100. Das zweite ASL schiebt das Bit bei %01000000 jedoch einfach raus, ohne daß es danach weiter beachtet wird. Deshalb haben "d" und "D" eine identische Wirkung. Tut mir leid, aber wenn Du Groß- und …

  • Neues OS für C64 (mit Zeichensatz-UI)

    M. J. - - Anwenderprogramme

    Beitrag

    Zitat von Korodny: „M.J. sieht das offenbar anders “ Nee, der sieht das schon ähnlich wie Du mit einem Unterschied: Nachdem es nun nicht mehr darum geht, Module per Hot-Plugin direkt auf dem Rom aufzurufen, sondern allein, Dateien vom Rom ins Ram zu kopieren, wird die Sache erheblich einfacher. Wofür man in der Tat sorgen muß, ist, - alle Routinen, die das Rom betreffen, auf eben diesem auszulagern (Rom Bank 1 bietet sich an) und nur bei Bedarf ins Ram zu kopieren, damit diese ansonsten keinen P…

  • Neues OS/GUI für den C64

    M. J. - - Anwenderprogramme

    Beitrag

    Zitat von Retrofan: „sollte dann aber trotzdem das Color-RAM an gleicher Stelle halten “ Das wäre ungünstig. Das Farbram für die HiresBitmap hat mit dem Farbram des VIC (im IO-Bereich bei $d800..$dbff) nichts zu tun. Um den Speicher im Bereich $d000..$dfff optimal nutzen zu können, wäre es besser, das Farbram ans Ende zu legen bei $dc00..$dfff, um von $d000..$dbff einen durchgängigen 3kb-Speicher zu erhalten. Was die von mir vorgeschlagene Speicheraufteilung anbelangt, so gäbe es noch ein paar S…

  • Neues OS/GUI für den C64

    M. J. - - Anwenderprogramme

    Beitrag

    @Retrofan Zitat von Retrofan: „Laut M.J. und anderen Quellen schaltet sich der Bereich ab $D000 auch von RAM auf ROM, wenn man das EF einblenden will “ Nicht auf ROM (d. h. Zeichensatzrom des VIC), sondern auf IO, also ROM-IO-ROM. Die Einblendung des Zeichensatzroms macht keinen Sinn. Wie Du richtig ausführst, lassen sich zwei brauchbare Zustände beschreiben, von denen einer (Work) der Standardzustand für den laufenden Betrieb einer Applikation sein sollte. Leider befürchte ich, daß Deine letzte…

  • Neues OS/GUI für den C64

    M. J. - - Anwenderprogramme

    Beitrag

    Zitat von Retrofan: „Kannst du das genauer erläutern? “ Um einen Proportionalfont, bei dem ein Zeichen nicht genau einem Byte entspricht, in das Screen-RAM schreiben zu können, muß man zunächst das alte Screenbyte holen, das neue Zeichen darin hinodern und dann in den Bildschirm zurückschreiben: Quellcode (3 Zeilen)Außerdem soll der Bildschirm auch gescrollt werden können. Und dafür muß ebenfalls das Ram gelesen werden. Nicht zuletzt macht es keinen Sinn, Bitmapgraphik zu verwenden, aber keine R…

  • Neues OS/GUI für den C64

    M. J. - - Anwenderprogramme

    Beitrag

    Zitat von M. J.: „Mit der Einblendung von Roms ab $8000 senkt man automatisch die Menge des zur Verfügung stehenden freien Speichers ab auf maximal 31 KB ($400 - $7fff). Außerdem muß der Code bankweise organisiert sein. Und wenn ich das auf codebase richtig gelesen habe, setzt die Einblendung des Roms voraus, daß $1 auf #$37 oder #$33 gesetzt ist, was auch gleichzeitig den alten Kernal sowie den IO-Bereich bzw. das VIC-Charrom aktiviert, so daß ein Zugriff auf das Ram bei $d000-$dfff aus dem Rom…