GeoRam Loader von ChatGPT

Es gibt 29 Antworten in diesem Thema, welches 2.215 mal aufgerufen wurde. Der letzte Beitrag (20. Januar 2025 um 15:18) ist von JohannDark.

  • Ich habe ChatGPT gefragt nach einem Basic-Loader zum Laden eines Basic Programms in den Speicher einer GeoRam.

    Das Basic-Programm heißt (im Moment) NORM2 und ist 88 Blöcke lang, GeoRam Speicher sind 512kb.

    Leider bricht der Code immer mit einem Syntax Error in 160 ab, was ist falsch, oder sollte der Code ganz anders aufgebaut werden?

    Hier der Code:

    10 rem *** c64 basic loader for prg to georam ***

    20 rem assumptions:

    30 rem - prg file is 88 blocks (22464 bytes)

    40 rem - georam has 512kb available

    50 rem - prg file starts at $0801

    60 rem

    70 rem variables:

    80 rem b$ - filename

    90 rem a - start address of prg file

    100 rem x, y - indexes for memory transfer

    110 rem

    120 b$="norm2":rem set filename

    130 open 1,8,2,b$+",p,r"

    140 if st<>0 then print"error opening file":end

    150 print"loading ";b$

    160 for i=0 to 22463

    165 rem load 88 blocks

    170 getBitte melde dich an, um diesen Link zu sehen.,a$:if st<>0 then print"load error":end

    175 if a$="" then a$=chr$(0):rem handle empty input

    180 poke 2048+i,asc(a$)

    190 next i

    200 close 1

    210 print"file loaded, copying to georam"

    220 sys49152:rem call asm routine for georam transfer

    230 print"done!"

    240 end

    250 rem *** machine code routine ***

    260 rem writes data from $0801 to georam

    270 data 169,0,141,0,2,169,8,141,1,2,169,0,141,0,4,169,0,141,1,4

    280 data 169,1,141,2,4,169,0,141,3,4,160,0,177,1,141,4,4,200,208

    290 data 250,230,3,208,247,230,2,208,241,141,0,4,96

    300 for i=49152 to 49247:read a:poke i,a:next i

  • Relativ einfache Erklärung: das Basic-Programm überschreibt sich selber! (siehe Zeile 180)

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • So, wie Du es geplant hast, fällt mir nur eine Lösung ein: Basic-Start rauf setzen, dann kann NORM2 "normal" nach $0801 geladen werden.

    BTW: warum machst Du es denn so umständlich mit dem Einlesen und benutzt nicht den LOAD-Befehl?

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Es wird auch nie nach 300 gesprungen um das Maschinensprache Programm zu installieren, und ob das dann auf funktionieren würde ist fraglich… chatGPT hat nicht wirklich Ahnung vom C64, also wird da nichts funktionierendes dabei rauskommen…

  • mrsid ich finde auch z. B. Zeile 100 interessant (auch, wenn es "nur" REM ist): da werden die Variablen X und Y erwähnt, die aber nirgendwo auftauchen.

    Ich bin nur gerade zu faul, das Maschinenprogrämmchen mal anzusehen, ob das funktionieren würde :wink:

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Ich habe gerade mal nur ab Zeile 250 das Teil gemacht. Es erfolgt ein

    ?OUT OF DATA ERROR IN 300

    Variable I enthält zu dem Zeitpunkt 49204, da fehlt also Etliches, oder die Endadresse 49247 ist falsch.

    alke01 Schmeiß den Müll von ChatGPT weg, nicht ansatzweise lauffähig. Programmier das lieber selber, das macht Spaß und marschiert dann auch :wink:

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Und nun der Maschinenteil, das ist RICHTIG geil... hat mit GeoRam halt einfach mal so überhaupt nix zu tun.


    Besonders beachtlich $C020 ... :lol27:

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • alke01 vielleicht kannst du erläutern, was das Ziel wäre.
    Das GeoRAM als generelles Disk-Laufwerk?

    Es gibt ja fertige RAMdisk Programme dafür.

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • alke01 vielleicht kannst du erläutern, was das Ziel wäre.
    Das GeoRAM als generelles Disk-Laufwerk?

    Es gibt ja fertige RAMdisk Programme dafür.

    Ziel ist es das Programm "norm2" in den Speicher der GeoRam abzulegen und von dort zu starten, um mehr freien "normalen" Speicher zu haben, aber vielleicht liegt auch hier schon der Verständnisfehler...

  • 8R0TK4$T3N 23. Dezember 2024 um 09:18

    Hat den Titel des Themas von „GeoRam Loder von ChatGPT“ zu „GeoRam Loader von ChatGPT“ geändert.
  • Ziel ist es das Programm "norm2" in den Speicher der GeoRam abzulegen und von dort zu starten, um mehr freien "normalen" Speicher zu haben, aber vielleicht liegt auch hier schon der Verständnisfehler...

    Korrekt.

    Man kann in der *eoRam tatsächlich Programme ausführen. Allerdings bedarf es dazu etwas Aufwand: entweder ist die Routine <256 Bytes, dann ist der Aufwand relativ gering. Denkbar wäre auch, dass das Programm, das in der *eoRam direkt läuft, über mehrere Pages geht. Aber das dürfte einen gigantischen Aufwand erzeugen, den sich keiner antut oder antun will. Beide Punkte sind aber eher nur mit Assembler-Routinen machbar, weil für Basic incl. aller Variablen(!) 255 Bytes schon SEHR knapp ist.

    Was bei Deinem Vorhaben eher funktioniert, ist eine Version mit der REU. Aber selbst da braucht es ein Steuerprogramm, das Speicherbereiche swappt. Grundsätzlich kann man das auch mit der *eoRam machen, da wird das Swappen allerdings relativ langsam, wegen der fehlenden DMA. In jedem Fall brauchst Du immer ein Steuerprogramm.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Ziel ist es das Programm "norm2" in den Speicher der GeoRam abzulegen und von dort zu starten, um mehr freien "normalen" Speicher zu haben, aber vielleicht liegt auch hier schon der Verständnisfehler...

    Ist norm2 das gesamte Programm, das einfach schneller geladen werden soll oder wird das von einem anderen Programm nachgeladen?


    Eine RAM Erweiterung hilft dir unter Basic hauptsächlich dann, wenn du zb ganze Bildschirme schnell wieder abrufen willst (hat ja 1kb so ein Bildschirm im Textmodus) oder große Mengen an Bytes wie sie zb in DATA statements vorkommen würden, rasch zur Hand haben willst, ohne sie ständig im Speicher zu halten

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Korrekt.

    ok. Ich probiere halt mal rum. Habe noch nie was mir GeoRam oder Reu gemacht.


    Ist norm2 das gesamte Programm, das einfach schneller geladen werden soll oder wird das von einem anderen Programm nachgeladen?

    Ist das gesamte Programm

  • Um das ins GeoRAM zu kriegen, oder auch in die REU, muss es ohnehin erstmal geladen werden.
    Wenn das Programm dann nicht mehr nachlädt, dann gewinnt man dadurch eigentlich nix. Es liegt zwar dann in der Erweiterung, gibt aber keinen Grund, es von dort nochmal zu holen.
    Oder würdest du dann auf Buffer-Batterie setzen und das Programm direkt beim nächsten Mal einschalten vom GeoRAM holen wollen?

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Ziel ist es das Programm "norm2" in den Speicher der GeoRam abzulegen und von dort zu starten, um mehr freien "normalen" Speicher zu haben, aber vielleicht liegt auch hier schon der Verständnisfehler...

    Der verbrauchte Speicher im C64 ist und bleibt aber der gleiche, egal von WO das Programm gestartet wird :nixwiss:

    "Werter Pöbel, wertes Gesocks ... aus dem Arsche zieht euch den Stock ..."

  • Der verbrauchte Speicher im C64 ist und bleibt aber der gleiche, egal von WO das Programm gestartet wird

    Ja, hier ist mein Verständnisfehler... Ich lade es zwar ins GeoRam (habe es jetzt soweit hinbekommen) was auch noch ewig lange dauert,

    aber wenn ich es starte habe ich wieder so wenig freien Speicher zur verfügung wie vorher.

    Ich muss also aus dem eigentlichen Hauptprogramm "norm2" Sachen auslagern und dann holen wenn sie benötigt werden. Habe ich das jetzt richtig verstanden oder

    habe ich immer noch ein Verständisproblem?

  • ChatGPT ist ganz brauchbar bei WEB-basierten Anwendungen, den Rest sollte man als Ideen werten. Bei 6502-ASM kommt da nur Grütze raus. Ich hatte mich vor vielen Jahren mit dem GeoRAM beschäftigt, da entstand auch der Test.

    Hier sind ein auch ein paar Quelltexte dazu: Bitte melde dich an, um diesen Link zu sehen.

    Wenn man eine Datei öffnet, immer einen Sektor abholt, kann man das da recht einfach hineinschreiben, da immer genau 256Byte eingeblendet werden. Muss man nur Page und Sektor passend schalten.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |