Schnelles Füllen und Löschen mit SYS

Es gibt 161 Antworten in diesem Thema, welches 22.333 mal aufgerufen wurde. Der letzte Beitrag (17. Oktober 2016 um 02:26) ist von BIF.

  • Also, wenn es nur um das Löschen des Speichers geht und anschließendem Reset, das kann man auch einfacher haben:

    Ausschalten und wieder einschalten.

    :D

    Und das Beste daran ist, daß man nicht eine einzelne Zeile Code eintippen muß. 8o

    Dunkel war's und die Milch ward sauer,
    Da legte sich die Wurst auf die Lauer,
    Und schubste den Käse von der Mauer.

  • Ausschalten und wieder einschalten.

    Eieieiei :LOL . Das ist aber doch ein Hardware-SuperduperdremalschwarzerKater-Trick :lol23: . Die Kategorie lautet aber in erster Linie doch Programmieren. :zeig:

    <--- Das da ist eine Hälfte meines Ichs
    Bitte melde dich an, um diesen Link zu sehen.

  • Jetzt mal ohne Ausschalten hier ein echter 101% BASIC V2 Trick, der den Bereich von $04CE bis $07E7 sofort mit $20 löscht.

    Einfach im Direktmodus eingeben und mit RETURN bestätigen:
    SYS64738

    (OK, ein evt. vorhandenes BASIC Programm ist dann halt futsch, aber es geht hier ja nicht um fertige Lösungen)


    <Edit>

    Die Kategorie lautet aber in erster Linie doch Programmieren.

    Na gut:

    10 ::::::::SYS64738
    Diesen Einzeiler bitte mit RUN starten.

    Schöns Tägli.

    ___________________________________________________________
    Meine Kreationen: Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.
    | Bitte melde dich an, um diesen Link zu sehen.
    Avatar: Copyright 2017 by Saiki

    Einmal editiert, zuletzt von syshack (12. Oktober 2016 um 12:29)

  • Mehr wollen wir auch nicht ... :S

    Ach komm', einer geht noch :drink: Aber dann ist auch wirklich Schluss :drunk:

    Wissen ist das einzige Gut, das sich beim Teilen vermehrt. Also seid vorsichtig damit!

  • Unglaublich!!! :hae: Ganz ohne Doppelpunkte und quer-durchs-Universum-Kopiererei von Speicherinhalten.

    <--- Das da ist eine Hälfte meines Ichs
    Bitte melde dich an, um diesen Link zu sehen.

  • Nach 7 Thread-Seiten wissen wir:

    Es gibt die "saubere" Lösung von Haubitze und die "schmutzige" Lösung von BIF.

    Wer hier länger im Forum "lebt", der lernt, es gibt da diesen Exzentriker vom Berge der sich BIF nennt und schräge Dinge mit Basic tut. Dazu muss man doch eigentlich keine BIF-Warnschilder im Forum aufstellen, das merkt man nach 2 Threadseiten selber, vor allem wenn man ihn etwas fragt.

    Ich nutze BIFs schrägen Löschcode, weil es wirklich nur ein Dreizeiler ist und er meinen C64 nicht kaputt macht. Es entfällt das ordnungsgemäße und zeitaufwändige Laden nach $c000. Außerdem bleibt der Speicher ab $c000 (oder Kassettenpuffer oder wo auch immer) frei falls ich diesen wegen einer anderen Sache zwingend nutzen MUSS.

    Für mich ist der C64 und auch der Amiga ein Ort, wo man "unsauber" sein darf. Weil man hier noch eine gewisse Überschaubarkeit hat und totale Manipulierbarkeit ja auch ein Anreizmerkmal ist, das moderne Rechner gar nicht mehr bieten DÜRFEN. Demo Coding basiert auf "Unsauberkeit" und da gibt es kein Bashing gegen Demo Coder, die Hardware zweckentfremden. Es gibt immer irgendwo Trickser die nicht nach Handbuch arbeiten.

    Wenn ich mich bei Systemen wie dem C64 schon auf die Hardware einlassen muss, wenn ich sie schon kennen muss, weil ich sonst nicht arbeiten kann, dann will ich auf eigene Gefahr auch ausnutzen dürfen, dass ich alles darf. Mit Rückschlägen muss ich dann aber auch leben denn ich habe es nicht anders gewollt.

    Und wie man es "richtig" macht, lernt man im Forum ja auch. Schlimm wäre es, wenn es hier im Forum nur "Getrickse" gäbe und keinen "Qualitätsstandard". Aber wenn der Forum-Tenor sagt "So macht man es ordentlich, aber wenn man es drauf anlegt, kann man aber auch auf eigenes Risiko rumspinnen", dann ist das doch ok und wahrheitsgenäß. Wir sind alle erwachsen und müssen wissen was wir tun.

  • Also, wenn es nur um das Löschen des Speichers geht und anschließendem Reset, das kann man auch einfacher haben:

    Ausschalten und wieder einschalten.

    Na das funktioniert aber auch nicht zuverlässig, da der Speicher sich nur langsam löscht. Ich erinnere mich an Spiele mit Resetschutz (Als ich noch kein AR hatte) da musste der Rechner teilweise fast eine Minute ausbleiben, bis er wieder normal startete.....

  • BIF ist wirklich beharrlich seine Tricks zu verteidigen, dass bewundere ich wirklich. Bei aller Diskussion um sauberen Programmierstil muss ich das wirklich mal anerkennen. Außerdem scheint BIF wirklich Humor zu besitzen. Ich meine zumindest, das eine oder andere Mal ein "Augenzwinkernd" in den Beiträgen zu entdecken.
    So! Und jetzt dürfen mich alle ernsthaften Coder, die anderer Meinung sind steinigen.


    Gesendet von iPhone mit Tapatalk

    <--- Das da ist eine Hälfte meines Ichs
    Bitte melde dich an, um diesen Link zu sehen.

  • Bei jedem Trick gibt es eventuelle Vor- und Nachteile.
    Man muß als Programmierer natürlich immer versuchen das richtige Unterprogramm für den richtigen Anwendungfall zu finden.
    Das bei meinen ersten beiden Listings zwei Bytes nach 2/3 geschrieben werden kann natürlich ein Grund sein, z.B. auf mein drittes Listing oder den Haubiztze-Code auszuweichen.
    So ist das Leben eben.
    Allerdings könnte man es auch als Vorteil sehen, daß man auswählen kann, ob man den Code mit RTS oder mit einer Fehlermeldung verläßt, weil man dann über den Endvektor theoretisch noch einen Sprung ausführen kann.
    In jedem Fall ist man mit dem Lösch-ROM-Code flexibel, was man auch als Vorteil sehen kann.

    Schönen Gruß.

  • Wann hört denn das Prospektverteilen endlich auf ... ||

    Solange bis das versprochene "Tips % Tricks zu BASIC V2" Buch endlich kommt :D

    ___________________________________________________________
    Meine Kreationen: Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.
    | Bitte melde dich an, um diesen Link zu sehen.
    Avatar: Copyright 2017 by Saiki

  • Da bei dem Code in PostBitte melde dich an, um diesen Link zu sehen. tatsächlich eine Veränderung in Speicherstelle 2/3 auftaucht veröffentliche ich hier noch mal einen Alternativcode, der zeigt, wie man auch dieses mögliche Problem mit Basic.V2 korrigieren kann.

    Quellcode:
    10 :a=1024:b=1000:c=42:gosub30,fuell:end
    30 :d=peek(2):e=peek(3):gosub31:poke2,d:poke3,e:return:rem---ram-fuell(a,b,c)
    31 :poke780,c:poke114,b/256:poke113,b-peek(114)*256
    32 :poke89,a/256+peek(114):poke88,a-int(a/256)*256:poke12,1:sys45762:return

    Erklärung:
    in Zeile 30 werden die Speicherstellen 2/3 vor dem Aufruf des Unterprogramms in die Variablen d/e übernommen und vor beenden des UP´s wird 2/3 dann mit d/e zurückgesetzt.

    Schönen Gruß.

  • Bei jedem Trick gibt es eventuelle Vor- und Nachteile.
    Man muß als Programmierer natürlich immer versuchen das richtige Unterprogramm für den richtigen Anwendungfall zu finden.

    Du findest Deine Unterprogramme? 8|

    Ich schreibe die immer selber, dann gibt es eigentlich nur Vorteile. :D

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • oobdoo:

    Ob es bei den von mir geposteten Programmen Nachteile gibt, ist natürlich fraglich.
    Bislang hab ich noch keine gravierenden Nachteile entdecken können.
    Wie das Listing in Post#152 zeigt kann man das (theoretische) Problem mit dem Beschreiben von 2/3 durchaus mit Basic korrigieren.
    Ein echtes Problem ist das Beschreiben von 2/3 nicht, da es in einem Bereich stattfindet, der vom Basic-Interpreter nicht genutzt wird.
    Ein Problem wäre es nur, wenn die Beschreibung ins Basic-Programm oder an Interpreter-gefärdende Stellen gemacht würde.
    Daher gibt es beim Listing-PostBitte melde dich an, um diesen Link zu sehen. bestenfalls kosmetische Unschönheiten, die man aber wie Post#152 und die anderen Listings zeigen auch korrigieren kann, wenn gewünscht.

    Schönen Gruß.

  • Worum es bei den Kritikern geht ist, daß, wenn man den SYS-Aufruf verändert, damit die Schreibadresse der zwei Feld-Kopf-Bytes verändert wird.
    Interessant ist natürlich, wo die 2 Byte dann hingeschrieben werden.

    Normal : poke12,1:sys45762: Schreibadresse 0+2, also 2/3
    Bei Aufruf mit Variable, sys v, wird übrigens in die Variable selbst geschrieben:
    Das heißt, daß der Varialbenwert von v verändert wird.
    sys45762. : bewirkt das Schreiben nach 128+2, in den Interpreter, was zum Absturz führen kann.
    sys45762e-: bewirkt das Schreiben nach 32*1024, das wäre dann im Basic-RAM

    Man kann hier also mit verschiedenen Sys-Aufrufen experimentieren, um den Schreibbereich des 2 Byte Zeigers zu verstellen.

    Ob das sinnvoll ist wär natürlich eine Frage, das kann aber natürlich jeder Programmierer so machen, wie er will.

    Schönen Gruß.

  • Also auf Grund der Tests mit der Pointer-Verlegung veröffentliche ich hier noch einmal einen Alternativcode zu PostBitte melde dich an, um diesen Link zu sehen.:
    Der zeigt, daß man ein :SYS D: also sys variable durchaus machen kann.
    Und dabei bleibt auch 2/3 unbeschrieben.
    Alternativ dazu wird die Variable d beschrieben.
    Es findet also nur die Veränderung einer Basic-Variablen statt.

    Quellcode:
    0 :rem-- a=loesch-adresse
    1 :rem-- b=bereichs-länge
    2 :rem-- c=fuell-code
    3 :rem-- d=rom-adresse
    9 :
    10 :a=1024:b=1000:c=42:gosub50:end
    19 :
    50 :d=45762:rem---ram-fuell(a,b,c,d)
    51 :poke780,c:poke114,b/256:poke113,b-peek(114)*256:poke768,61
    52 :poke89,a/256+peek(114):poke88,a-int(a/256)*256:sysd:sys58451:return

    Schönen Gruß.

  • Feld-Kopf-Bytes

    Kenne ich nicht. Ist das etwas in der Art?

    Bitte melde dich an, um diesen Anhang zu sehen.

    :loet

    Der Thread muss ja erhalten bleiben...

    BASIC (V2) gut und schön, aber wozu dermaßen verbiegen, wenn ich es auch mit einem klaren SYS xy (sicher [!] ) erledigen kann?

    Aber ist ja eh: Forum <> Wand (BIF).

    Munter bleiben.

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • @Hexworks:

    Also erstens handelt es sich nur um einen Kopf, bzw. zwei Bytes, von denen sich hier manche verunsichert fühlen.

    Das ist ein Nebeneffekt, des ROM-Programms, der aber, wie ich in den letzten beiden Listings gezeigt habe durchaus vollständig beherschbar ist.

    Zweitens hab ich natürlich nichts gegen Assembler Lösungen.
    Ich hab übrigens mit dem dritten Listing selbst einen Installer gepostet.

    Und drittens sag ich mal, wo kein Problem ist muß man auch keins daraus machen.
    Also meinetwegen kann hier noch munter weiter gehen.

    Schönen Gruß.