![]() |
|
|
|
#1 |
|
NetBSD Paladin
Registrierungsdatum: Aug 2006
Ort: Gera
Beiträge: 666
|
klass. Basic Standard
Hallo,
ich beschäftige mich gerade mit Basic und schreibe dafür einen Interpreter in Java. Leider gibt's ja nicht einen Basic Standard sondern Hunderte. Um meinen zu irgendwas kompatibel zu machen, suche ich Referenz evtl auch Beispiele zu den klass. Basic, also kein moderner Schnickschnack. Ich weiß, dass es da ISO Standards gibt, aber die wollen Bares für die Einsichtnahme. Alternativ ein paar Fragen(fürs erste):
Mein derzeitiges Basic ist zeilennummerorientiert, soll der komplexitäthalber nur mit klass. Konstrukten arbeiten, also: LET, GOTO, IF THEN, FOR DO STEP, GOSUB, RETURN, INPUT, PRINT, REM, END usw. und ein paar Builtins. Zum in Erinnerung schwelgen: Code:
__________________
"Don't just believe that because something is trendy that it's good", Knuth 2012 NetBSD_6.99.19@Thinkpad_X220i |
|
|
|
|
|
#2 |
|
Naiver Mutmaßlicher
Registrierungsdatum: May 2004
Ort: Berlin
Beiträge: 1.763
|
INPUT geht auch mit Semikolon. In diesem Fall wird immer ein Fragezeichen vor der Eingabe angezeigt. Wird kein Meldetext angegeben, kommt immer ein Fragezeichen. Dies ist schon m.E. bei allen zumindest MBasic, Basic 80, TurboBasic und GFABasic so.
Beim PRINT gibt es auch die Kommatavariante. Bei der Angabe eines Kommas wird quasi in Tabulatorenschritten auf dem Bildschirmen ausgeben: GFABasic 16 Zeichen, MBasic/80 sind es 14 Zeichen. Für THEN GOTO gibt es auch Alternativen: IF E=1 THEN 20 auch schon mal so gesehen: IF E=1 GOTO 20 INT(), STR$(), VAL(), LEN() solltest du m.E. auch noch implementieren.
__________________
BLUES, ELWOOD ILLINOIS LICENSE : B263-1655-2187 CURRENTLY UNDER SUSPENSION WARRANTS OUTSTANDING : PARKG. 116 MOVING VIOLATIONS : 56 ARREST DRIVER ... IMPOUND VEHICLE |
|
|
|
|
|
#3 | |
|
NetBSD Paladin
Registrierungsdatum: Aug 2006
Ort: Gera
Beiträge: 666
|
Ohne THEN dürfte C64 Basic sein. Die oben genannten Funktionen sind schon implementiert, die hatte ich zu Builtins gezählt.
Ich vermute mal das NEXT I hat den Zweck sich dem Umweg über den Stack/Speicher zu sparen. Ich habe hier eine Quelle für ZX81 Basic gefunden, interessant(neben den Zeichensatz) ist hier die int-Funktion: Zitat:
__________________
"Don't just believe that because something is trendy that it's good", Knuth 2012 NetBSD_6.99.19@Thinkpad_X220i |
|
|
|
|
|
|
#4 |
|
Naiver Mutmaßlicher
Registrierungsdatum: May 2004
Ort: Berlin
Beiträge: 1.763
|
Um deine Frage zu beantworten: Ja, was sonst?!
![]() Mailboxen/BBSen und Internet waren noch nicht in Sicht. Und gute 700-800 DM für ein Floppylaufwerk (1541 für den C64) waren zumindest für Schüler nicht gerade von schlechten Eltern. Selbst wenn man ein Laufwerk hatte, musste man ja ggf. auch noch jemanden kennen, der den Kram schon eingetickert hat ![]() Es gab auch Zeitschriften die Listings mit Checksumme je Zeile hatten, damit man keine Tippfehler bei Eingabe mittels entsprechendem Tool macht. Bitte nicht an ZX-Basic orientieren, dies war wirklich krude. ![]() PS: GFA-Basic war damals mein Lieblings-Basic. Das hatte ein paar schöne Features.
__________________
BLUES, ELWOOD ILLINOIS LICENSE : B263-1655-2187 CURRENTLY UNDER SUSPENSION WARRANTS OUTSTANDING : PARKG. 116 MOVING VIOLATIONS : 56 ARREST DRIVER ... IMPOUND VEHICLE |
|
|
|
|
|
#5 |
|
ausÜberzeugung altmodisch
Registrierungsdatum: Jan 2007
Ort: Hechlingen (Bayern)
Beiträge: 220
|
Hallo,
Ich kann im wesentlichen nur aus C64-Sicht antworten.
Zu den von Dir erwähnten: LET, GOTO, IF THEN, FOR DO STEP, GOSUB, RETURN, INPUT, PRINT, REM, END ... kommen noch hinzu: OPEN und CLOSE, GET, READ und DATA, DIM, CLR, DEF FN und halt viele vordefinierte Funktionen wie SQR, INT, ABS, RND, SGN, SIN, COS, TAN, ATN, LOG, EXP, VAL, STR$, ASC, CHR$, LEFT$, MID$, RIGHT$, LEN, POS, SPC, TAB, FRE usw. Für GOTO und GOSUB gab es noch ON X GOTO und ON Y GOSUB, eine Art Case-Anweisung. Weggelassen habe ich Kommandozeilenbefehle wie LOAD, die fast nie in Programmen gebraucht wurden, und maschinenbezogene wie POKE. Und das I hinter NEXT? Das konnte man auch weglassen, dann schloß man automatisch immer die innerste Schleife. Was das folgende Konstrukt machte, weiß ich nicht mehr sicher; ich glaube, die innere Schleife wurde einfach jedes Mal vergessen: Code:
|
|
|
|
|
|
#6 |
|
NetBSD Paladin
Registrierungsdatum: Aug 2006
Ort: Gera
Beiträge: 666
|
Danke erstmal. Aber bei einigen Dingen muss ich nochmal nachharken:
Ist folgende Ausdruck prinzipiell in einer IF Konstruktion erlaubt: A=(B=C), sprich implizite Boolean Umwandlung in Integer mit dem wieder verglichen wird? Bei MBasic war das wohl(false = 0, true= -1) der Fall. Zur FOR-Schleife, ich kann also im Schleifenkörper, Laufvariable manipulieren? (Achtung: sinnfreier Beispielcode) Code:
Und nochmal globale Variable, also sind alle Variable von überall sichtbar. Bspw. Code:
__________________
"Don't just believe that because something is trendy that it's good", Knuth 2012 NetBSD_6.99.19@Thinkpad_X220i Geändert von darktrym (28.08.2012 um 21:55 Uhr). |
|
|
|
|
|
#7 |
|
Naiver Mutmaßlicher
Registrierungsdatum: May 2004
Ort: Berlin
Beiträge: 1.763
|
Guck dir das mal an http://x11-basic.sourceforge.net/
(bin über http://de.wikipedia.org/wiki/GFA-BASIC) drauf gekommen.
__________________
BLUES, ELWOOD ILLINOIS LICENSE : B263-1655-2187 CURRENTLY UNDER SUSPENSION WARRANTS OUTSTANDING : PARKG. 116 MOVING VIOLATIONS : 56 ARREST DRIVER ... IMPOUND VEHICLE |
|
|
|
|
|
#8 | |
|
Registered User
Registrierungsdatum: Jan 2009
Beiträge: 29
|
Zitat:
http://www.homecomputermuseum.de/doku/man25_de.htm Grüße, S. |
|
|
|
|
|
|
#9 |
|
Libellenliebhaber
Registrierungsdatum: Mar 2005
Beiträge: 2.810
|
Darf man fragen, wie du zu dieser Aussage kommst?
__________________
Declaration of Internet Freedom |
|
|
|
|
|
#10 |
|
Naiver Mutmaßlicher
Registrierungsdatum: May 2004
Ort: Berlin
Beiträge: 1.763
|
Ich hatte einen ZX81 und wenn dieses Basic nicht krude ist, dann weiss ich auch nicht mehr (ja, es gibt noch schlimmeres)
__________________
BLUES, ELWOOD ILLINOIS LICENSE : B263-1655-2187 CURRENTLY UNDER SUSPENSION WARRANTS OUTSTANDING : PARKG. 116 MOVING VIOLATIONS : 56 ARREST DRIVER ... IMPOUND VEHICLE |
|
|
|
|
|
#11 | |||
|
ausÜberzeugung altmodisch
Registrierungsdatum: Jan 2007
Ort: Hechlingen (Bayern)
Beiträge: 220
|
Zitat:
![]() Es gibt keine Boolean-Typen, Vergleichsoperatoren sind nur in der IF-Anweisung erlaubt und werden als Teil deren interpretiert. A=(B=C) ergibt einen Syntax error. Zitat:
Zitat:
Das mit ON N GOTO hast Du richtig verstanden. ON N GOTO 40,50,60 springt also zu Zeile 60, wenn N=3 ist. Ist N nicht 1, 2 oder 3, wird die Anweisung ignoriert. |
|||
|
|
|
|
|
#12 |
|
NetBSD Paladin
Registrierungsdatum: Aug 2006
Ort: Gera
Beiträge: 666
|
So 'n Sch***. Folgende Dinge sind bei Basic Programmierern üblich gewesen:
Code:
Code:
Aber der Klassiker: Code:
PS: Optionale Schlüsselwörter sind auch ganz nett.
__________________
"Don't just believe that because something is trendy that it's good", Knuth 2012 NetBSD_6.99.19@Thinkpad_X220i |
|
|
|
|
|
#13 | ||
|
ausÜberzeugung altmodisch
Registrierungsdatum: Jan 2007
Ort: Hechlingen (Bayern)
Beiträge: 220
|
Zitat:
Zitat:
|
||
|
|
|
|
|
#14 | |
|
NetBSD Paladin
Registrierungsdatum: Aug 2006
Ort: Gera
Beiträge: 666
|
Ja, Schlüsselwörter die keiner braucht, Leerzeichen die man weglassen kann, unterschied. Parametertrenner oder einfach mal weglassen. Die Krönung aber Printparameter ankündigen und dann keinen folgen lassen.
Ein weiteres Hightlight: Zitat:
Auch gibts solche tollen Varianten von IFs: Code:
Mal zur Abwechslung ein informationstheoret. Problem. Ich steh' grad auf dem Schlauch. AND ist sowohl logisch als auch ein binärer Operator. Meine Logik/Grammatik kommt damit, zu Recht, nicht klar. Bspw. wird folgende Zeile fehlerhaft interpretiert: Code:
__________________
"Don't just believe that because something is trendy that it's good", Knuth 2012 NetBSD_6.99.19@Thinkpad_X220i Geändert von darktrym (01.09.2012 um 20:56 Uhr). |
|
|
|
|
|
|
#15 | ||
|
Naiver Mutmaßlicher
Registrierungsdatum: May 2004
Ort: Berlin
Beiträge: 1.763
|
Zitat:
Man konnte es zwar leicht lernen, aber auch viel Falsch machen. Mit den besser werdenen Editoren (meist mitgeliefert inkl. Syntaxcheck beim Eingeben) wurde es dann besser.Zitat:
)Es bietet sich vllt an, einen Standalone Converter(-> Bytecode) zu bauen, um sich beim Interpreter nur mit halbwegs sauberem Code rumschlagen zu müssen.
__________________
BLUES, ELWOOD ILLINOIS LICENSE : B263-1655-2187 CURRENTLY UNDER SUSPENSION WARRANTS OUTSTANDING : PARKG. 116 MOVING VIOLATIONS : 56 ARREST DRIVER ... IMPOUND VEHICLE Geändert von Elwood (02.09.2012 um 07:24 Uhr). |
||
|
|
|
![]() |
| Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste) | |
| Themen-Optionen | |
| Ansicht | Thema bewerten |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| Cairo {standard input}: Assembler messages: {standard input}:83: Error: symbol `path | dissent | FreeBSD - Anwendungen und Ports | 3 | 23.04.2007 17:59 |
| bash als standard shell | !r0nY | FreeBSD - Allgemein | 6 | 06.09.2006 10:54 |
| vi als standard editor ändern? | systemerror123 | FreeBSD - Allgemein | 9 | 08.03.2006 16:21 |
| apache mit basic password schutz | xbartk | OpenBSD - Allgemein | 16 | 23.10.2004 18:37 |
| FireFox und Java/Flash-Plugins | Tomonage | FreeBSD - Anwendungen und Ports | 58 | 09.06.2004 04:14 |