TRICKS mit ROM-RAM

Es gibt 68 Antworten in diesem Thema, welches 16.829 mal aufgerufen wurde. Der letzte Beitrag (28. Januar 2023 um 13:38) ist von BIF.

  • RAM-BASIC/2

    Bitte melde dich an, um diesen Anhang zu sehen.

    Und hier kommt RAM-BASIC/2 mit weiteren interessanten BASIC-ROM Änderungen,

    wie das


    Ketten-POKE: poke2,2,3,4:printpeek(2)peek(3)peek(4)

    String-Adresse: a$="a": printa$,abs(a$): sysa$

    GET : geta$,a,a%:

    LOAD : load"name",8,adr

    OPEN : open1,3:open1,3:
    MAL : Korrektur der Multiplikation
    GO : Cursor-Setzen

    Hier wird gezeigt, was mit ein paar relativ kleinen Änderungen des Basic-ROMs alles so möglich ist.
    Fehler wie bei GETa: sind völlig überflüssig, mit ein paar Pokes kann get auch alle Variablen verarbeiten, dabei ohne Verlängerung des Maschinen-Codes.
    Mit der Erweiterung des Interpreters um die STRING-ADRESSE bekommt man den Direkt-Zugriff auf Strings und zusätzlich eine Schnittstelle zur Maschinensprache.
    mit :sys s$: kann man eine Basic-Befehlserweiterung in Strings programmieren und komfortabel einbinden.
    Auch das KETTEN-POKE erleichtert, vereinfacht und beschleunigt das Basic erheblich.
    Statt :pokea+1,b/256:pokea,b-peek(a+1)*256:
    tippt man einfach: pokea,b,b/256:
    Auch ein LOAD-ADRESSE ist relativ einfach einzubinden:
    :load"name",8,adresse
    Und natürlich ist auch die Fehermeldung beim OPEN-Befehl völlig überflüssig, wenn man den Kanal vor Ausführung automatisch schließt.
    Auch das verkürzt den Basic-Quelltext und macht Basic-Programme weniger fehleranfällig.

    Schönen Gruß.

  • Paradroid

    Danke für Deinen Verweis auf meine Jugendsünden. Falls noch jemand Interesse an dem Kettenpoke hat, kann ich mal nachsehen, in welcher Ausgabe der 64er ich das veröffentlicht habe.

    Herzliche Grüße aus einem regnerischen München

    Nikolaus Heusler

  • RAM-BASIC/3-Basic-Befehlserweiterung

    Bitte melde dich an, um diesen Anhang zu sehen.

    Hallo, hier habe ich mit RAM-BASIC/3 einmal versucht alle bestehenden Probleme mit BasicV.2 zu lösen.
    Gleichzeitig wird natürlich die Frage beantwortet, was so alles reformmäßig möglich ist, wobei ich mich natürlich nur auf die Verbesserung des BASIC-ROMs ohne KERNAL-ROM beschränkt habe.

    RAM-BASIC/3 bietet:
    Fehlermeldungen mit Basic-Befehlen
    Ketten-Poke mit 1Byte, 2Byte und Strings
    Systemvariablen: z.B. @x,@y,@z für X-Position, Y-Position, Zeilenlänge, Basic-Zeilenadresse, usw.

    1 Byte und 2 Byte-Peek: %(),%%()

    Input : Zeileneingabe mit Sonderzeichen
    get : mit Längenangabe
    Print [x,y,z]: mit Cursorsetzen
    Load : Adresse und Load mit RUN
    Open: ohne close

    Strings: Stringadresse, Ketten ASC und Stringparameter setzen.

    GO : mit direktem Adress-Sprung
    STOP: Cursor einschalten und auf Taste warten
    und einiges mehr.

    Schönen Gruß.

  • NHeusler:
    Gruß an Nikolaus Heusler, dein Name ist mir auf jeden Fall noch aus den 64er Zeiten bekannt.
    So weit ich mich erinnere hast du seinerzeit den Diskfüller programmiert.

    Ansonsten würde es mich natürlich auch interessieren, wenn du erzählen könntest, was für Basic und andere Programme du veröffentlicht hast.

    Schönen Gruß.

  • BIF

    Vielen Dank für Dein Interesse! Ich habe zwischen 1987 und 1995 mehr als 400 Beiträge im 64er-Magazin und den Sonderheften veröffentlicht. Die gibt es sogar als Liste, aber die Liste ist natürlich viel zu lang, als dass ich sie hier posten könnte. Viel über mich und meine Programme findest Du aber, wenn Du meinen Namen googelst.

    Herzliche Grüße aus einem nieselregnerischen München

    Nikolaus Heusler

  • Viel über mich und meine Programme findest Du aber, wenn Du meinen Namen googelst.

    Oder im C64-Wiki den Eintrag nachlesen (wenn man schon die Ehre für einen eigenen Wiki-Eintrag hat)! ;)

    Bitte melde dich an, um diesen Link zu sehen.

  • Zu RAM-BASIC/3:
    Damit sind schon super viele Tricks möglich sogar laden von Strings in einen gewünschten Speicherbereich ist möglich, da mit :poke adresse:get*a$,länge: der Ladebereich für Strings bis 255 Zeichen selbst gewählt werden kann. Mit poke adr,a$: kann man jeden Speicherbereich löschen oder mit Strings füllen. Auch ein Kopieren von Speicherbereichen ist möglich, da die Stringparameter mit :a$=$(#adr,länge): selbst gesetzt werden können.


    Auch wenn RAM-BASIC/3 noch nicht alles hat, hat es doch meiner Meinung nach schon den Anspruch des Alles könners. Die Befehlskette ist natürlich noch beliebig erweiterbar. Z.B. im freigeworden Bereich von 1024-2047.
    Oder man kann das Basic mit Maschinencode-Strings :sys befehl$: weiter erweitern.

    Schönen Gruß.

  • GEWINN 1024 Bytes mehr Basic-Programmspeicher

    Hier noch mal der AHA-Code mit dem ich im Zusammenhang mit ROM-RAM das gesamte Basic-Programm um 1 kB nach unten schiebe. Hierbei lösche ich lediglich Zeile 1 und schiebe damit das gesamte Programm um 1 kB nach unten an den vorherigen Bildschirmanfang.

    820 :ifpeek(44)=4then:return

    821 :poke210,4:poke44,4:print"@aha@[home]1[runter]pO46,"peek(46)-4":rU[home]";

    822 :poke631,13:poke632,13:poke198,2:sys42107

    Die Funtion ist relativ einfach: Der PRINT-Befehl schreibt ein Nullbyte, die Verbindungsadresse und Zeilenadresse auf den Bildschirm(1024), danach wird dann Zeile 1 gelöscht und die Endadresse des PRG´s korrigiert.

    Damit zeigt sich ROM-RAM mal wieder als Alleskönner.
    1. Mehr Grafikspeicher 16 kB

    2. Mehr Hauptspeicher 1kB
    3. Mehr und verbesserte Basic-Befehle durch ein Basic-Update, z.B. RAM-BASIC/3.

    Schönen Gruß.