Hallo Besucher, der Thread wurde 130k mal aufgerufen und enthält 845 Antworten

letzter Beitrag von Snoopy am

BASIC-Weihnachten - Idee

  • Hi


    Ich werde mit größter Wahrscheinlichkeit die Programme ohne Checksumme eingeben. So habe ich mehr Spass beim Fehler suchen. So habe ich damals das Basic gelernt. Auf die harte Tour :D
    Und dann später auch mit Buch, weil ich nicht wirklich wußte wie die Basicbefehle funktionnierten.


    Schönen 4. Advent euch allen noch und ein ruhiges Weihnachtsfest. :ChPeace
    Drachen

  • Ich habe die Programme (bis jetzt 2) auch ohne Checksummer abgetippt mit allen Unannehmlichkeiten.... :D

  • Ein Listing überschreiben tut man am c64 am besten mit Löschen und neu anlegen.


    Unter demselben Namen neu abspeichern funktioniert leider nicht.

    Das geht schon, sollte man aber besser nicht machen. Die Replace-Funktion ist nämlich buggy...

  • Ich werde mit größter Wahrscheinlichkeit die Programme ohne Checksumme eingeben.

    Kann man machen :D Aber wenn du dann nicht bei jedem Programm nachher Fehler suchst bist du wirklich gut im Abtippen, hab schon bei dem ersten gewisse Probleme gehabt durch falsch abgezählte Leerzeichen ;)


    Ein bisschen gefährlich ist das bei Programmen, die Maschinencode enthalten (oder auch nur POKE verwenden) -- ein falscher Wert dort und das Programm zerstört sich selbst ;) Also, ob mit oder ohne Checksummer: IMMER das abgetippte vor dem ersten Start speichern, das erspart Wutanfälle :kaputt


    @csdragon was das ersetzen einer Datei auf Diskette angeht ist die Situation in der Tat etwas unschön. Der Versuch, eine Datei zu speichern, die schon existiert, ergibt einen FILE EXISTS Error. Blöderweise holt BASIC den Fehler aber nicht beim Laufwerk ab, du erkennst es also erstmal nur an der blinkenden LED, dass da ein Fehler ist. Es wird noch schlimmer: Den Fehler abholen kann man nicht im BASIC Direktmodus. Echter Murks hier von Commodore.


    Murks #2: Natürlich ist durchaus ein SAVE Modus vorgesehen, der ein vorhandenes File ersetzt. Der sollte aber nie verwendet werden, weil das ROM der 1541 buggy ist und dort ziemlichen Mist bauen kann. Weiß die Details gerade nicht auswendig, auf jeden Fall kann's Datenverlust geben, also nie machen.


    Murks #3: Viele Befehle, die das Floppy-DOS kennt, sind über BASIC nicht unterstützt, darunter der zum Löschen eines Files. Man muss von Hand den Befehlskanal zu Floppy öffnen und den Befehl dorthin senden. Immerhin geht das im Direktmodus, kürzeste Variante:


    Code
    1. oP1,8,15,"s:[filename]":clO1

    s steht hier für "scratch". In deinem Beispiel stand s0 -- die 0 ist bei der 1541 überflüssig (sie wählt die "unit" aus, also welches Laufwerk bei Geräten mit mehreren Schächten ... die 1541 hat aber nur eines). Außerdem hast du Filenummer #15 geöffnet -- die Filenummer kann man aber frei wählen, 1 ist sicher kürzer -- wichtig ist die Sekundäradresse 15 (nach der Laufwerksadresse 8), das ist der Befehlskanal. Es gibt leute, die den Befehlskanal immer auf Filenummer #15 öffnen, um nichts zu verwechseln. Halte ich nur für unnötig umständlich. Und zuletzt, die Befehle open und close kann man natürlich mit oP und clO abkürzen :)

  • s steht hier für "scratch". In deinem Beispiel stand s0 -- die 0 ist bei der 1541 überflüssig (sie wählt die "unit" aus, also welches Laufwerk bei Geräten mit mehreren Schächten ... die 1541 hat aber nur eines). Außerdem hast du Filenummer #15 geöffnet -- die Filenummer kann man aber frei wählen, 1 ist sicher kürzer -- wichtig ist die Sekundäradresse 15 (nach der Laufwerksadresse 8), das ist der Befehlskanal. Es gibt leute, die den Befehlskanal immer auf Filenummer #15 öffnen, um nichts zu verwechseln. Halte ich nur für unnötig umständlich. Und zuletzt, die Befehle open und close kann man natürlich mit oP und clO abkürzen

    Jiffy-Dos macht das ganze deutlich angenehmer... ich sag nur 'F8'... auch für das sonstige Filehandling ein deutlicher Gewinn ... :dafuer:

  • Danke für die ausführlichen Antworten!

    Inventar:
    PET2001 (defekt), CBM3032 (defekt), CBM8032-SK (braucht mal ne Reinigung), Proxa 720 (diverse Macken), mehrere C64 (manche davon defekt - kommt Zeit, kommt Hardware für ne einfachere Reparatur ^^), Modding C64 (mit neuem Gehaeuse, MixSID, Keyman64), Ultimate64 - definitiv einer meiner Favorits!, SX-64 (seit der CC2019 defekt - repariertes Netzteil muss wieder eingebaut werden.), Amiga1200 (in der Lernphase :böse ), Amiga 500
    PI1541, Easyflash3, KungFuFlash, SD2IEC, PETSD+, Tapecart, Tapduino...

  • Kann mir nochmal jemand kurz auf die Sprünge helfen wegen der Leerzeichen in den Listings. Ich krieg sonst noch die Krise. Gerade am Anfang von Xmas-Tris, Zeile 30, 40 oder 50. Egal, wie viele Leerzeichen ich verwende, die verlangte Prüfsumme ist nie die angezeigte. Ich nehme also z.B. in Zeile 30 nach dem Anführungszeichen als Zählhilfe dieZeile 20, und komme auf 18 Leerzeichen. Falsch. Oder?
    Oder Zeile 40, die Leerzeichen nach dem 00/00{blk}, zähle ich 9. Falsch. Auch keine 10, oder 11, oder 17, oder 5.


    Da hier außer mir keiner über die Leerzeichen meckert, mach ich wohl als einziger was falsch?

  • @Bagitman so weit bin ich selbst noch nicht, aber ich bin gleich über einen Fall gestolpert, wo die Prüfsumme offenbar mit "geshifteten" Leerzeichen berechnet wurde -- das ist dann fies, denn die sehen ja genau gleich aus (und sollten sinnvollerweise gar nicht vorkommen). Wenn man also ganz sicher ist, dass die Zeile stimmt, kann man die Prüfsumme auch mal ignorieren :( schade ...


    Ich glaube Zeile 30 in dem Listing ist so ein Fall, ich zähle da auch 18 Leerzeichen und habe es gerade mal getestet, ich erhalte 1D1E als Prüfsumme.

  • Bei XMAS-TRIS


    Z30 = 18 * Spaces bis zum PI
    Z40 = 10 * Spaces nach 00/00{blk}
    Z50 =10 * Spaces nach 00/00{blk}
    Z60 = 5 * Spaces nach 00/00{blk}
    Z70 =5 * Spaces nach 00/00{blk}


    Ich hoffe das hilft

  • Geshiftete Leerzeichen passieren, wenn man SPACE (also Leertaste) zusammen mit SHIFT (Umschalttaste) drückt. Das kann z.b. beim programmieren passieren, wenn man zwischen Anführungszeichen ein Zeichen mit [SHIFT]+[INST/DEL] einfügt und dann "vergisst" [SHIFT] loszulassen und zusätzlich [SPACE] drückt. Zu sehen ist dann nur ein Leerzeichen, aber gespeichert ist eben Umschalt+Leerzeichen. Gänzlich Unsichtbar und somit fürs Auge nicht erkennbar. Die Prüfsumme wird allerdings auf den gespeicherten Quelltext berechnet.


    P.S. Übrigens... Man kann auch die Befehle abkürzen ohne die Prüfsumme zu verfälschen. Also z.b. "?" anstelle "PRINT" eingeben. Der Checksummer prüft also die intern verwendeten Token, und nur innerhalb von Anführungszeichen wirklich jedes Zeichen.

  • Also ich habe das gerade ueberprueft. Tatsaechlich kommt bei mir beim Abtippen ebenfalls eine andere Pruefsumme raus (1D1E, wie bei @zrs1). Ich habe das Programm ja allerdings auch als PRG vorliegen, wenn ich da den Checksummen-Generator drueberlaufen lasse, dann bekomme ich die Checksumme die im Heft steht. Im PRG sind allerdings "echte" Leerzeichen gespeichert und keine invertierten, habe ich gerade per Hex-Editor nachgeprueft.

  • Vier Listings (+Checksummer) sind auf meiner 1581.
    Drei davon hat meine Tochter "Adventskranz-Simulator", "Waverider Santa" und zuletzt "ZeHa goes Skiing" bereits seit meiner Heft-Enteignung gestern abgetippt. Seit 1,5h läuft "ZeHa goes Skiing" mit wechselnden Spielern (mein bisheriger Rekord: 948m). Es gab sogar schon Streit wer denn als nächstes darf; Sohnematz oder Töchterchen... :D


    Na ja, habe noch einige Zeilen drangehängt um nicht nach jeden Lauf neu "RUN" eingeben zu müssen - Das Heft ist einfach GROSSARTIG!
    Vielen vielen Dank an alle die das möglich gemacht haben!!

  • Habe jetzt das original PRG (ein Programm weniger zum abtippen, nunja ... *g*) -- Zeile 30 von Xmas-Tris hat direkt nach dem ersten Anführungszeichen genau ein "geshiftetes Space" .... grrr.


    Ich baue jetzt das Tool zum generieren der Prüfsummen um, so dass es geshiftete Spaces durch normale ersetzt. Die Checksummer selbst bleiben wie sie sind, wer beim abtippen geshiftete Leerzeichen "produziert" bekommt dann eben eine "falsche" Prüfsumme und kann korrigieren. Aber dann ist wenigstens gewährleistet, dass in Zukunft alle Checksummen zu ausschließlich normalen Leerzeichen passen :)

  • Jiffy-Dos macht das ganze deutlich angenehmer... ich sag nur 'F8'... auch für das sonstige Filehandling ein deutlicher Gewinn ... :dafuer:

    oder den C128 nehmen: scratch"dateiname" - löscht ohne weitere Parameter dateiname auf Laufwerk 8... macht sogar eine Rückfrage vor'm Löschen

  • Habe jetzt das original PRG (ein Programm weniger zum abtippen, nunja ... *g*)

    Was soll das denn heissen?


    Ich habe den Screen Teil mit dem ScreenPainter vom C64-Studio erstellt und dann als Basic Zeilen exportiert.
    Vielleich liegt das daran.

  • @drazil ich habe @zrs1 das Programm in PRG-Form zur Verfuegung gestellt, damit dieser herausfinden kann, was das Problem bei den Checksummen ist. Wie gesagt, es war ein "geshiftetes Leerzeichen" drin, direkt nach dem Anfuehrungszeichen. Mir war diese Problematik vor diesem Heft-Projekt auch gaenzlich unbekannt. Aber so bekommt man langsam einen Ueberblick, was man bei so einem Abtipp-Heft alles beachten muss ;) beim naechsten Mal bin ich da auf jeden Fall schlauer.


    Habe zudem die Zeilen vor dem Drucken abgeaendert, naemlich die Leerzeichen zum Ende jeder Zeile hin entfernt (weil diese ja nicht getippt werden muessen und somit den Abtipper nur nerven wuerden). Daher ging ich davon aus, dass hier evtl. was schiefging. War nun aber wie gesagt wohl doch ein geshiftetes Leerzeichen.