Sinn der USR()-Funktion?

  • Hier noch mal eine Anwendung für USR() und zwar das RAM-PEEK:
    Dieser Code erlaubt es dem Anwender mit USR ins RAM unter dem ROM zu blicken.

    Installiert wird der Code in den String in Zeile 61, in Zeile 62 wird der usr-Vektor dann auf die ermittelte Stringadresse gesetzt.


    Quellcode
    1. 60 :rem---usr-ram-peek(31b)
    2. 61 :a=-len(":123456789a123456789b123456789c1")+peek(113)+peek(114)*256
    3. 62 :poke786,a/256:poke785,a-peek(786)*256
    4. 65 :fori=atoa+30:readb:pokei,b:next::::data165,21,72,165,20,72,32,247,183,165
    5. 66 :data1,133,9,160,48,120,132,1,160,1,136,177,20,164,9,132,1,88,76,26,184
    6. 69 :::b=usr(1):printb


    Schönen Gruß.
  • Im Prinzip ist das der normale Peek-Befehl, nur daß vor dem Auslesen des Bytes die Konfig in Speicherstelle 1 auf 48 gesetzt wird.
    Dann wird die Peek-Adresse gelesen und die Konfig wieder auf den alten Wert zurückgesetze.

    Schönen Gruß.
  • Also noch einmal etwas ausführender:

    Vorausschickend sag ich mal das der RAM-Speicher der normale Rechnerspeicher ist, der vom Programmierer gelesen und beschrieben werden kann.
    Im ROM-Speicher, der nur gelesen, aber nicht beschrieben werden kann befindet sich das Basic-Betriebssystem und die Zeichensätze.

    Das RAM-Peek unterscheidet sich vom normalen Peek darin, das es nur das RAM liest.
    Das normale Peek liest die Speicherbereiche so, wie es in Speicherstelle 1 angegeben ist.

    1= 55 : Normal-Konfig mit Basic-Rom, I/O-Bereich, Kernal-ROM eingeblendet.
    1= 51 : ROM-KONFIG mit Basic-Rom, Zeichen-Rom, Kernal-Rom eingeblendet
    1= 48 : RAM-Konfig alle RAM-Bereiche sind eingeblendet, alle Rom-Bereiche und I/O ausgeblendet

    Das USR-RAM-PEEK schaltet vor dem Peek Speicherstelle 1 auf 48, so das alle RAM-Speicherbereiche gelesen werden können.
    Danach wird wieder auf die vorherige Konfig zurückgeschaltet.

    Schönen Gruß.
  • Beim IRQ wird über den Interrupt-Vektor in ein Unterprogramm verzweigt, das die Tastatur abfragt und die TI-Zeit hochzählt.

    Der IRQ funktioniert aber nur korrekt, wenn der I/O Bereich eingeblendet ist, da sich dort der Interuptzähler/Timer befindet.

    Sonst muß oder kann der IRQ im CIA-Bereich ausgeschaltet werden.
    Siehe auch ROM-RAM-Thead.

    Schönen Gruß.
  • Tja, BIF, falsche Antwort.

    Du hättest enthusi vielleicht auf die verräterische "120" und "88" in dem DATA-Zeilen-Teil aufmerksam machen sollen.

    Nächste Frage: was macht deine Ablegemethode in der Zeichenkette eigentlich, wenn im Maschinenprogramm mal eine 0 vorkommt? (<- und das soll, dem Hörensagen nach zu urteilen, gar nicht so selten sein...)

    Und gleich noch diese Frage hinterher: warum wäre die Kombination "8, 120" zusammen mit "40" möglicherweise sinnvoller als "120" und "88"?
  • Mike schrieb:

    Tja, BIF, falsche Antwort.
    Wirklich?
    Nach dem Prinzip der "Schrittweisen Verfeinerung", das z.B. auch im Lehrplan des Informatikunterrichts einer öff. Schule enthalten war die ich besuchte, war es völlig legitim, bei einem Programm und erst recht bei einem didaktischen (Lehr-) Programm-Beispiel (wie es Bifs Beispiele ohne Zweifel sind) zunächst das Grund-Prinzip einer Lösung aufzuzeigen und von Spezialfällen abzusehen. Die Grund-Lösung musste eben keineswegs alle "Wechselfälle des Lebens" abdecken, sondern konnte wie gesagt nach dem Regel-Ausnahme-Prinzip sich auch durchaus darauf beschränken, eine Lösung in groben Zügen zu liefern, die das Grundprinzip einer Fragestellung beantwortet.

    Erst in späteren Schritten werden dann Ausnahmen und insbesondere Sonderfälle sukzesive mit abgedeckt; wie z.b. Aufruf einer Routine aus einem Interrupt-Dispatcher heraus mit gesetztem Interrupt-disable-flag o. dgl. (s.u.)

    hilfreiche Links:
    "Leitfaden der angewandten Informatik"
    link.springer.com/chapter/10.1007/978-3-322-94660-7_3

    Mike schrieb:

    Und gleich noch diese Frage hinterher: warum wäre die Kombination "8, 120" zusammen mit "40" möglicherweise sinnvoller als "120" und "88"?
    Möglicherweise kann man nicht in *allen* Fällen davon ausgehen dass das Interrupt-disable-Flag immer gelöscht war, wenn so eine Routine aufgerufen wird und das abschließende CLI ($58) könnte den Aufrufer durcheinanderbringen (wenn eine Verriegelung gegen Interrupts bei zeitkritischen Aufgaben durchbrochen wird und plötzlich der Tastaturinterrupt dazwischenfunkt). Aber es obliegt ohnehin dem Verwender, zu schauen ob eine konkrete Implementierung auch in allen wesentlichen Fällen unverändert in seine Aufgabenstellung hineinpasst.
    Gesendet über das Bimetall Thermorelais meines Rowenta DW 4015 Dampfbügeleisens

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Stephan ()

  • Stephan schrieb:

    ...und erst recht bei einem didaktischen (Lehr-) Programm-Beispiel (wie es Bifs Beispiele ohne Zweifel sind)...
    :lol33: :lol27: ROTFL
    Du hast eine sehr seltsame Vorstellung von Didaktik, wenn Du ernsthaft glaubst BIFs Machwerke wären geeignet dem Beginner (der aus "Basic", du weisst schon) etwas beizubringen.

    Einen Brocken hinwerfen, nicht erläutern und auf Nachfrage (detaillierte, wohlgemerkt) mit schnippischem "man sucht Lösungen" zu antworten, hat mit Lehren einen feuchten Dreck zu tun.

    Ich bin ausbilderisch tätig - wenn ich so einen Schmonzes unter die Auszubildenden bringen würde müsste mich mein Chef (zurecht) abmahnen.
    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?
  • Nun, sie mag Dir seltsam vorkommen, aber immerhin ist sie begründet, erprobt und wissenschaftlich belegt sowie mit einem Link versehen. Ist deine Meinung das auch?
    Gesendet über das Bimetall Thermorelais meines Rowenta DW 4015 Dampfbügeleisens
  • Bei BIF gibt es keine schrittweise Verfeinerung, sondern nur seltsam gestricktes Zeug.
    Dem Konzept einer zunehmend feiner granulierten Lernerei widerspreche ich nicht - deinem Postulat dass BIF didaktische Lehrprogramme verfasst sehr wohl.

    Hier noch ein Link für Dich.

    Und damit wanderst Du für mich endgültig auf die Liste der zerBIFten Arten.
    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BladeRunner ()

  • Hier kann zu gemacht werden glaube ich :whistling:
    ────────────────────────────────────────────────────────────
    Time of Silence - Time of Silence 2 Development Blog
    ────────────────────────────────────────────────────────────