Zeilen/Variablelänge unter (Turbo-) BASIC


Zeilen/Variablelänge unter (Turbo-) BASIC

von Sleepy » Mo 17. Mär 2014, 22:04
Ich arbeite gerade wieder etwas an der Neuauflage des Turbo-BASIC-Handbuches.

Beim Korrekturlesen bin ich gerade darüber gestolpert daß die maximale Zeilenlänge für eine Programmzeile verschiedentlich mit max. 128 Zeichen angegeben wird, z.B. im alten Turbo-Basic-Handbuch, im DeReATARI (S. 71; Engabepuffer = $580 - $5FF <> 128 Zeichen) oder im Wikipedia-Eintrag zum ATARI-Basic (Program editing, 5. Absatz).

Da bei der Eingabe im Editor alles nach der dritten Bildschirmzeile abgeschnitten wird wäre in meinen Augen eine maximale Programmzeilenlänge von 3x40=120 Zeichen (mit POKE 82,0 um den linken Bildschirmrand auf "0" zu setzen) einleuchtend, wie es z.B. auch im Profibuch Kapitel 2.5.1 beschrieben wird.

Daraus ergibt sich die nächste Ungereimtheit: Im Turbo-BASIC-Buch ist die max. Länge eines Variablennamens mit 130 Zeichen angegeben. Wenn man die maximale Länge einer Programmzeile von 120 Zeichen (oder selbst die an anderen Stellen angebene 128) berücksichtigt macht das keinen Sinn; der Name könnte maximal 120 Zeichen lang sein, wobei man mindestens 1 Zeichen für das "=" und ein Zeichen für irgendeinen Wert benötigt, also wäre die maximale (nicht sinnvolle) Länge 118 Zeichen...

Für (Turbo-) BASIC relevant dürfte doch die (mit POKE 82,0) 120-Zeichen-Grenze sein, oder übersehe ich da etwas?

Sleepy

Re: Zeilen/Variablelänge unter (Turbo-) BASIC

von Jac » Di 18. Mär 2014, 00:14
Der Standard 40 Zeicheneditor des OS hat natürlich Beschränkungen. Die kann man auch umgehen, indem man die Tabelle der Logischen Zeilen anpasst, aber das ist aufwendig. Oder man verwendet als einen anderen Editor wie z.B. den in eine XEP 80, oder....

Die maximale Länge eines Variablennamens in TB ist tatsächlich 128. Und sie ist unabhängig von der Zeilenbreite/Maximallänge eines Editors. Du kannst z.B. folgende Zeile in eine Textdatei "TEST.LST" schreiben und mit ENTER "TEST.LST" einlesen. Die ist dann 4 Bildschirmzeilen lang.

10 LET A0123456789A0123456789A0123456789A0123456789A0123456789A0123456789A0123456789A0123456789A0123456789A0123456789A0123456 789A0123456=1

Und jetzt sollte Gunnar schnell die 10 Liners Regeln prüfen, ob ich da nicht gerade eine Schlupfloch gefunden habe :-)

Re: Zeilen/Variablelänge unter (Turbo-) BASIC

von CharlieChaplin » Di 18. Mär 2014, 00:54
Hmmmm,

noch schöner ist es bei Flappy von Pirx, hier wurde auf irgendeinem PC-Editor der Code verfasst. Listet man das TB XL Programm, so haben manche ProgrammZeilen (mit Nummer) sogar eine Länge von bis zu 7 Zeilen !

Siehe z.B. hier: http://atariage.com/forums/topic/221948 ... try2948644
(ATR Image runterladen, Programm starten und mittels Break-Taste listen!)
oder hier: http://atariage.com/forums/topic/221948 ... try2928483

Wobei in dem Flappy-Programm schon reichlich Data-Zeilen und MC benutzt wurden. Es scheinen also bis zu 256 Zeichen pro Programmzeile erlaubt zu sein, allerdings kann der A8 Editor nicht mehr als 3x40 Zeichen akzeptieren. Der von Pirx auf dem PC entworfene Code wird aber auf dem A8 einwandfrei ausgeführt.

-Andreas Koch.

Re: Zeilen/Variablelänge unter (Turbo-) BASIC

von Sleepy » Di 18. Mär 2014, 09:41
O.K., man kann also sagen daß durch den BASIC-Editor der Eingabepuffer bzw. die editierbare Programmzeilenlänge auf max. 120 Zeichen festgelegt ist, intern aber durchaus längere Zeilen bzw. Variabelnamen verarbeitet werden können.

Sleepy

Re: Zeilen/Variablelänge unter (Turbo-) BASIC

von Jac » Di 18. Mär 2014, 20:16
Die echte maximale Länge eines Variablennamens ist 128 Zeichen. Das kann man schon so schreiben.

Die echte maximale Länge einer BASIC Zeile sind 253 Bytes. Diese beinhalten die Zeilenummer (2 bytes), Länge (2 bytes) gefolgt vom BASIC im Tokenformat. Tokenformat bedeutet, das pro Befehl nur 1 Byte gespeichert wird. Für "REM" z.B. die "0". Für alle Argumente der Parameter kommen dann noch Bytes hinzu, z.B. für den Text nach "REM" oder die Variablen nach PRINT. Da die Textdarstellung der Token un ihrere Parameter unterschiedlich ist, kann man keine für Menschen nachvollziehbar Schranke auf dieser Basis formulieren.

Re: Zeilen/Variablelänge unter (Turbo-) BASIC

von Bunsen » Di 18. Mär 2014, 21:59
Jac hat geschrieben:
Und jetzt sollte Gunnar schnell die 10 Liners Regeln prüfen, ob ich da nicht gerade eine Schlupfloch gefunden habe :-)


Das Schlupfloch wurde schon lange vorher gefunden ... und ausgenutzt. ilmenit hatte schon vorher voll zugeschlagen :mrgreen:

Dieser kleine Contest ist aber nicht der große ABBUC Softwarewettbewerb und soll mit einem Minimum an Regeln auskommen. Programme abzulehnen oder zu disqualifizieren finde ich auch doof. In erster Linie soll es ein Fun-Contest sein. Im Vorwege will ich nicht korrektiv tätig werden. Das macht die Jury auf der NOMAM. Der Eine wird vielleicht für sich entscheiden, dass es gecheatet ist und den überlangen Zeilen weniger Punkte geben. Der Andere wird vielleicht den erhöhten Aufwand honorieren.

10liner-contest

von Sleepy » Mi 19. Mär 2014, 07:41
Bei der Menge an Einsendungen könnte man noch unterteilen in "normal mit dem (Turbo-) BASIC-Editor einzugeben" und "nur mit anderen Hilfsmitteln einzugeben". ;-)

Sleepy

Re: Zeilen/Variablelänge unter (Turbo-) BASIC

von atarixle » Mo 24. Mär 2014, 18:35
Tippt man seine BASIC-Zeile mit Hilfe von Abkürzungen ein, so kommt man leicht auf mehr als nur 3×40 Zeichen. Solche Zeilen lassen sich zwar schlecht bearbeiten, aber möglich sind sie trotzdem.