BASIC Programme - wie dürfen sie aufgebaut sein?

Es gibt 30 Antworten in diesem Thema, welches 5.840 mal aufgerufen wurde. Der letzte Beitrag (12. September 2013 um 23:01) ist von BIF.

  • :?:
    Als Atari XL infizierter C64-Neuling haben sich noch ein paar Fragen ergeben:
    1. Programmzeilennummern sind von 1 bis 32767 am Atari-BASIC erlaubt - wie verhält sich entsprechendes beim C64?
    2. Beim Computerstart ist die Bildschirmzeile auf 38 von 40 Zeichen (ab Spalte 2) fest voreingestellt, was sich aber mit einem POKE ändern läßt. Man kann so eine Listingzeile über 3 Zeilen - also mit maximal 120 Zeichen - erzeugen. kurz vor erreichen des Letztmöglichen Zeichen ertönt ein akustisches Signal. Wie verhält sich das am C64?

  • Du kannst dein Basic mit der Zeile 0 beginnen.

  • Du kannst dein Basic mit der Zeile 0 beginnen.

    Du hast natürlich recht - hab' mich in der Hinsicht vertippt - natürlich kann eine Listingzeile ab "0" nummeriert beginnen - auch am Atari ...
    Aber wie ist die maximal mögliche Nummerierung?

  • wieweit die basic zeilen gehen weiss ich nicht, bin aber bis jetzt an kein limit gestossen. eine basiczeile kann zweizeilig sein, alles was danach kommt wird nicht mehr angenommen. aber es gibt einen trick - wenn man befehle abkürzt passen mehr in eine zeile (wird schneller abgearbeitet), die zeile ist dann aber nicht mehr komplett editierbar, beim list-en wird sie aber dreizeilig angezeigt. print kürzt man mit ? ab, viele andere befehle mit anfangsbuchstabe des befehls und zweiter buchstabe mit shift eingegeben, zb P[shift]O für poke. bei read und restore muss man aber aufpassen. noch eine hakelige sache ist, das nach einem " alle cursor angaben als steuerzeichen geschrieben werden, nach dem zweiten " ist das wieder abgeschalten. und wenn man leerzeichen mit INSERT einfügt und den cursor bewegen will dann werden da auch steuerzeichen angezeigt bei cursorbewegung, so lange bis die lücke mit cursorzeichen gefüllt ist. das kann einen ganz schön wahnsinnig machen am anfang, kommt glaube ich daher weil man mit den INSERT "löcher" in die bildschirmmaske schiebt.

    edit-nachtrag: maximale zeilennumber sollte 256*256 sein, gerade nochmal nachgelesen.

  • Zitat

    maximale zeilennumber sollte 256*256 sein, gerade nochmal nachgelesen.


    warum probiert ihr sowas nicht einfach mal aus statt einfach irgendwelchen unfug auf gut glück zu posten? grad in basic ist das doch ganz einfach....

  • Hmmm, die Basiczeilennummer wird aus zwei Byte gebildet. Ich komme da auf 65536 Möglichkeiten. Heißt 0+65535. Die größte Zeilennummer kann entsprechend "nur" 65535 sein. Beim Commodore-8Bit-Basic (zumindest allen mir bekannten= ist die höchste Zeilennummer aber auf 63999 begrenzt.

  • 1. von 0-63999
    2. 80 Zeichen sind das eintippbare Maximum. Abkürzungen der Befehle sind erlaubt. Damit bei exakt 80 Zeichen die Basic-Zeile noch übernommen wird, muss man aber mit dem Cursor nochmal eine Zeile nach oben gehen (der Cursor muss vor dem Return also in der Doppelzeile stehen). Warnung gibt's beim CEVI nicht. Man muss wissen was man tut :smile:

  • 80 Zeichen sind das eintippbare Maximum. Abkürzungen der Befehle sind erlaubt. Damit bei exakt 80 Zeichen die Basic-Zeile noch übernommen wird, muss man aber mit dem Cursor nochmal eine Zeile nach oben gehen (der Cursor muss vor dem Return also in der Doppelzeile stehen). Warnung gibt's beim CEVI nicht. Man muss wissen was man tut :smile:

    Das ist mir neu, dass man bei 80 Zeichen nochmals eine Zeile höher gehen muss. Irgendwie habe ich eine größere Zeilenlänge als nur 80 Zeichen in Erinnerung....

  • Es geht um die Eingabe: Beim Listen werden durchaus längere Zeilen angezeigt. Wenn man die Abkürzungen verwendet und Blanks weglässt, kann man so Zeilen mit einer Listlänge von mehr als 80 Zeichen eingeben. Das Return muss aber wie gesagt "oberhalb" sein.

    Gruß Dirk

  • Wenn der Cursur in die 3. Reihe springt dann musst du um die Zeile zu übernehmen noch mal in die zweite Zeilen gehen. Zeilen >80 Zeichen gehen nur mit Abk. der Befehle. Das sollte man aber nur im Ausnahmefall machen (oder zur Optimierung). Ein editieren einer solchen Zeile ist mühsam - weil alles was über die 80. Spalte hinausscheißt komplett neu eingepflegt werden muss.

  • Vielen Dank für die Info's
    Resüme: 80 Zeichen je Listingzeile gegenüber 120 am Atari - und 64000 statt 32768 Listzeilen, was dann - rein hypothetisch - bei vollausnutzung des Befehlsmengenspeichers am Atari und vergleichbarem Cevie-Programm in etwa 1 1/2 fache Zeilenmengen am C64 gegenüber Atari (falls überhaupt vergleichbar) entspricht - was aber nur rein theoretisch ist - darum braucht diese Erkenntnis bitte auch nicht weiter ausdiskutiert werden! Im Übrigen kenne ich am Atari auch kein Programm, daß den vollen in BASIC erreichbaren Speicher (etwa 32k mit und 38k ohne DOS) belegt und die Grenzen der Nummerierungsmöglichkeit erreicht ;)

  • Nein, bei 63999 möglichen Zeilennummern ist in Bezug auf "38911 Bytes free" die Chance gering dass die Zeilennummern knapp werden :)

  • Die verfügbaren Zeilennummern können schon deswegen nicht 'komplett' genutzt werden, weil eine nicht-leere Zeile in CBM BASIC mindestens 6 Bytes braucht - 2 Bytes für Linkpointer, 2 Bytes für Zeilennummer, min. 1 Byte für irgendwelchen Inhalt und 1 Nullbyte als Endemarker. Bei 38911 freien Bytes gehen so maximal ~6500 Zeilen in den verfügbaren Speicher, ohne daß da unbedingt etwas sinnvolles dabei rauskommt.

    Sinn macht das ganze insofern, daß man am Anfang der Programmentwicklung die Zeilennummern recht großzügig vergeben kann (z.B. in 10er-Schritten, und Unterroutinen z.B. mit 1000er-Nummern starten, etc. ... damit man später noch Zeilen einfügen konnte - das war noch wichtig, solange weder ein RENUMBER noch Cross-Entwicklungsumgebungen zur Verfügung standen. :)

    Irgendein BASIC hat sogar mal Fließkommazahlen(!) als Zeilennummern zugelassen. Muß noch mal recherchieren, welches das war.

  • DAS wär doch mal eine echte Compo:

    Wer schafft es, auf dem C64 ein Basicprogramm zu schreiben, das 63999 unterschiedliche Zeilen listet? :bgdev

    Gruß Dirk

  • Unterroutinen z.B. mit 1000er-Nummern starten, etc. .


    Und immer dran denken: Unterprogramme gehören an den Programmanfang :):prof:

  • Zitat

    Irgendein BASIC hat sogar mal Fließkommazahlen(!) als Zeilennummern zugelassen.


    ernsthaft? das klingt schon fast esoterisch =)

  • @sauhund ich habe mapping the 64 durchforstet und eine 2byte speicherstelle für gosub handling gefunden, darauf hab ich geschlossen das es 256*256 ist. vorher hab ich dreimal gegoogelt und nichts gefunden. das für jemand anderen im emulator ausprobieren ist mir dann aber zuviel aufwand. mea maxima culpa... who cares.

  • Es im Emulator auszuprobieren geht aber schneller, als in einem Beitrag zu erklären, dass es zuviel Aufwand sei. :D

    Zitat von Vernunftmensch

    ist nunmal so, wer scheiße redet der kriegt ein bißchen frischluft

  • Zitat

    Es im Emulator auszuprobieren geht aber schneller, als in einem Beitrag zu erklären, dass es zuviel Aufwand sei.


    und erst recht schneller als erstmal $bücher zu durchforsten :=)