gibt es für den zx81 ein Brainfuck-Interpreter

ZX-Team Forum
Antworten
zx81fan
User
Beiträge: 86
Registriert: 30.10.2008, 08:26

gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von zx81fan » 11.01.2009, 18:14

http://de.wikipedia.org/wiki/Brainfuck

Hallo, wurde so etwas schon irgendwann in früheren Tagen auf den zx81 durchgeführt?

mfg

Benutzeravatar
bodo
User
Beiträge: 321
Registriert: 14.02.2007, 17:21
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von bodo » 11.01.2009, 20:53

Keine Ahnung, aber das ist sicher eine nette Programmieraufgabe zum BASIC-Lernen... und natürlich zum C-Lernen!
B0D0: Real programmers do it in hex.

Benutzeravatar
siggi
User
Beiträge: 2531
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von siggi » 11.01.2009, 21:15

Aber Programmieren damit ist eher etwas unübersichtlich.
Dann schon lieber ohne GOTO:

http://www.fortran.com/come_from.html

:-)

Siggi

PS. Ich hatte "comefrom" mal in C implementiert und in einem Embedded System eingesetzt. Hab' dann aber wieder rausgenommen, als ich im Zuge der CE-Zertifizierung des Geräts den Source-Code dokumentieren mußte ;-)

Benutzeravatar
siggi
User
Beiträge: 2531
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von siggi » 12.11.2009, 10:53

Hier gibt's ein schönes Tutorial dazu, wie Brainfuck funktioklappert:

http://www.youtube.com/watch?v=OnQobTyqEd0

:roll:

Siggi

Benutzeravatar
MatthiasS
User
Beiträge: 116
Registriert: 11.05.2004, 15:29
Wohnort: Wuppertal
Kontaktdaten:

JA es gibt für den zx81 ein Brainfuck-Interpreter

Beitrag von MatthiasS » 15.11.2009, 13:16

Hallo,

ich hab einen programmiert!
http://www.swatosch.de/zx81/brainfuck.p
Ist erstmal ein pre-release. Vielleicht könnt ihr mal schauen, was noch falsch ist...

Was noch nicht drin ist ist der Input ",".
Es gehen also nur Programme, die etwas ausgeben.
Zeichensatz ist in ASCII, Zellen sind 16 Bit. Anzahl Zellen wird je nach verfügbaren Speicher ermittelt. Die eckigen Klammern gibts natürlich nicht, da nehmne wir die runden :-)

Doku? Ist das nötig? Ach was, das erklärt sich doch alles von selbst.

Matthias

Benutzeravatar
siggi
User
Beiträge: 2531
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von siggi » 15.11.2009, 18:42

Hallo Matthias
sieht ja schon mal gut aus :)

Habe noch nicht allzuviel damit gespielt, deshalbt eine Frage: gehen auch verschachtelte Klammern?

Und unter http://en.allexperts.com/e/b/br/brainfuck.htm habe ich noch was gelesen:
demnach sollten das Array üblicherweise 8-bit-Werte enthalten, keine 16 bittigen (damit's auch kompatibel zu den existierenden Programmen ist :lol: )

--------------------------------------------------------------------

Cell size
In the classic distribution, the cells are 8-bit bytes, and this is still the most common size. However, to read non-textual data, a brainfuck program may need to distinguish an end-of-file condition from any possible byte value; thus 16-bit cells have also been used. Some implementations have used 32-bit cells, 64-bit cells, or bignum cells with practically unlimited range, but programs that use this extra range are likely to be slow, since storing or using cell values generally takes time proportional to the values stored or used.

In all these variants, the , and . commands still read and write data in bytes. In most of them, the cells wrap around, i.e. incrementing a cell which holds its maximal value (with the + command) will bring it to its minimal value and vice versa. The exceptions are implementations which are distant from the underlying hardware, implementations that use bignums, and implementations that try to enforce portability.

Fortunately, it is usually easy to write brainfuck programs that do not ever cause integer wraparound or overflow. Such programs thus do not depend heavily on cell size. Generally this means avoiding increment of +255 (unsigned char wraparound); or avoiding the overstepping the boundaries of [-128, +127] inclusive (signed char wraparound). For more details on integer wraparound, see the Integer overflow article.

----------------------------------

Siggi

Benutzeravatar
MatthiasS
User
Beiträge: 116
Registriert: 11.05.2004, 15:29
Wohnort: Wuppertal
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von MatthiasS » 15.11.2009, 23:18

Hallo Siggi,
klar, Klammern gehen bis bis Ultimo geschachtelt (Klammertiefe wird mit einem 16 Bit Wert verfolgt). Obwohl auch hier sooo viel nicht wirklich gebraucht wird.

Ja, wegen der Zellen habe ich auch lange überlegt. Die Frage ist, ob es "Anwendungen" gibt, die den Wrap-around von 8 Bit Zellen benutzen. Ist aber auch nicht schwer, wieder auf 8 Bit down-zu-graden (schlechtes Englisch :-)). Und dann gibts auch gleich wieder doppelt so viele Zellen.

Momentan gibt es auch jeweils einen Fehler-Abbruch, wenn einen Zelle unter 0 decrementiert wird oder der Pointer unter 0 geht. Von daher ist ein Wrap-around in dieser Richtung auch gar nicht möglich. Gerade für diese Fälle gibt es eben nur wenig Hinweise, wie sich ein Interpreter verhalten sollte.

Da müsste man vielleicht mal die Anwender fragen :-)
Matthias

Benutzeravatar
MatthiasS
User
Beiträge: 116
Registriert: 11.05.2004, 15:29
Wohnort: Wuppertal
Kontaktdaten:

JA, es gibt ihn...

Beitrag von MatthiasS » 16.11.2009, 19:02

und jetzt geht auch der Input ","

http://www.swatosch.de/zx81/brainfuck.p

Damit ist es jetzt noch viel lustiger, damit zu programmieren...

Benutzeravatar
siggi
User
Beiträge: 2531
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von siggi » 16.11.2009, 22:37

Noch besser wäre es, wenn man damit dann auch Deine HRG ansteuern könnte. Aber leider gibt's ja keine Funktionsaufrufe :shock:

Es gibt zwar eine erweiterte Version BRAINFUCK++ (siehe http://www.jitunleashed.com/bf/index.html ), aber die bringt Netzwerklerei mit ins Spiel. Damit könnte man dann also auch einen Web-Browser programmieren :mrgreen: :lol:

Aber vielleicht kann man ja 'ne Version BRAINFUCK+- machen, die auch einen CALL-Operator hat (z. B: '@' oder auf dem Zeddy 'PFUND'), wobei der Pointer auf die 16-bit USR-Adresse zeigt (LSB) und dahinter die Parameter der Funktion abgelegt werden.

Wäre doch gelacht, wenn mit dem Zeddy nicht beste BRAINFUCKerei möglich wäre :twisted:

Siggi

Benutzeravatar
MatthiasS
User
Beiträge: 116
Registriert: 11.05.2004, 15:29
Wohnort: Wuppertal
Kontaktdaten:

JA es gibt ihn...

Beitrag von MatthiasS » 17.11.2009, 13:47

Für alle Leute, die es nocht nicht kennen. So sieht z.B. ein Programm aus, das "ZX81" auf den Bildschirm schreibt:

Code: Alles auswählen

  10 REM
  20 REM +++++++++
  30 REM (->+++++++++<)
  40 REM >+++++++++.--.<
  50 REM +++++(->-----<)
  60 REM >-------.-------.<
  70 REM
Da kann man schon einen Knoten ins Hirn kriegen, oder?
Matthias

Benutzeravatar
MatthiasS
User
Beiträge: 116
Registriert: 11.05.2004, 15:29
Wohnort: Wuppertal
Kontaktdaten:

und jetzt noch...

Beitrag von MatthiasS » 18.11.2009, 00:21

und jetzt geht auch noch mit "?" ein Dump über die ersten 22 Zellen.

Code: Alles auswählen

  10 REM
  20 REM +++++++++
  30 REM (->+++++++++?<)
  40 REM >+++++++++.--.<
  50 REM +++++(->-----<)
  60 REM >-------.-------.<
  70 REM
Zum Beispiel innerhalb einer Schleife. Der Interpreter wartet dann nachdem er die Zellen mit ihren Werten ausgegeben hat auf eine Taste. Man kann dann schön weiter-steppen und sehen, wie sich die Inhalte verändern. Die Zelle, auf die der Pointer zeigt, blinkt dabei inverse/normal.

Bild

Matthias

Benutzeravatar
siggi
User
Beiträge: 2531
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von siggi » 18.11.2009, 11:51

Hallo Matthias,
das mit dem "?" ist 'ne gute Idee (da hat man auch was für's Auge :P ).
Ich fände es allerdings besser, wenn man damit die Zellen in der "Umgebung" des aktuellen Pointers anzeigen würde. Denn wenn es "Vielzeller"-Programme gäbe, nützten die ersten 22 Zellen vielleicht nichts.

Siggi

Benutzeravatar
MatthiasS
User
Beiträge: 116
Registriert: 11.05.2004, 15:29
Wohnort: Wuppertal
Kontaktdaten:

Ja

Beitrag von MatthiasS » 18.11.2009, 20:27

Hallo Siggi,

da hast Du recht. Hab ich schon geändert. Jetzt schiebt sich der Dump-Bereich ggf. nach oben mit. Und alle acht Zellen ist deshalb auch eine Markierung - dann sieht man das Schieben der Zellen besser.

Und dann hab ich noch eingebaut, dass ein "??" so etwas wie ein Trace-Dump startet.
Nach jedem Befehl wird dann der Zellen-Dump aktualisiert und wartet auf eine Taste (single step). Links unten sieht man den nächsten Befehl, der dann ausgeführt wird.
Das hilft zu verstehen, was passiert bzw. warum es nicht passiert :-). Beendet wird der Trace-Dump mit einem einfachen Dump-Befehl "?"

Tja, ich frag mich gerade, ob überhaupt irgendwer das alles benuzt?
Benutzt das jemand überhaupt?

Matthias

Benutzeravatar
MatthiasS
User
Beiträge: 116
Registriert: 11.05.2004, 15:29
Wohnort: Wuppertal
Kontaktdaten:

JA

Beitrag von MatthiasS » 18.11.2009, 23:17

Ich hab mal ein Bubble-Sort Programm adaptiert:
http://www.swatosch.de/zx81/sort-bf.p

Das ist z.B. so ein Zellen-Fresser. Ohne den Zellen-Dump versteht man eigentlich gar nicht wie es arbeitet.
Nach dem Start kann man einzelne Zeichen eingeben. Zum Abschluß gibt man nur ein CR (Newline) ein. Und dann fängt es an, die Zeichen zu sortieren und auszugeben.

Das Original-Programm ist übrigens eines von vielen Beispielprogrammen auf:
http://esoteric.sange.fi/brainfuck/bf-source/prog/

Benutzeravatar
Joachim
User
Beiträge: 1192
Registriert: 06.11.2004, 20:21

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von Joachim » 19.11.2009, 11:01

Hallo Matthias, hallo Siggi!
Ich versteh's zwar nicht, find's aber genial! Wäre einen Vortrag auf dem nächsten Treffen wert. So mit Beamer und ZX81 in großer Runde .....
Bleibe als Unwissender euer Bewunderer und sammle weiterhin euere Brainf*ck-Anwendungen.

Grüße
Joachim

Benutzeravatar
MatthiasS
User
Beiträge: 116
Registriert: 11.05.2004, 15:29
Wohnort: Wuppertal
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von MatthiasS » 19.11.2009, 11:16

Hallo Joachim,

ja, das wäre toll! Aber, gibt es denn ein Treffen im nächsten Jahr?
Ich hab da irgendwas gehört, dass dies möglicherweise nicht stattfinden könnte.

Wie ist da der Status?

Matthias

Benutzeravatar
Jens
User
Beiträge: 1189
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von Jens » 19.11.2009, 11:32

Hallo Jungs!

Abgesehen davon, dass ich mich schon beim BASIC-Programmieren so fühle, als hätte ich einen Brainf-pieps-ck im Kopf, würde ich das auch sehr gerne näher kennenlernen.

Vor ein paar Tagen habe ich mit Henning Räder telefoniert. Es geht ihm schon wieder besser und ich habe ihm, da er ja beim Internet nicht mitmacht, einen USB-Stick geschickt. Brainf*ck war leider noch nicht dabei, aber das bekommt er auch noch von mir.

Henning fragte mich auch nach dem Treffen - er hat wohl vergeblich versucht, mit Peter in Kontakt zu treten.

Wenn das Treffen an der Organisation scheitern sollte, bin ich gerne bereit, meinen Beitrag zu leisten - dann bräuchten wir allerdings die Kontaktadressen, die Peter ja inne hat.

Das mit unserem Magazin ist ja auch eingeschlafen. Vielleicht sollten wir die Beiträge unter einer eigenen Rubrik hier im Forum veröffentlichen? Na ja, eigentlich läuft das ja schon so... :-)

Liebe Grüße und vielen Dank an die Brainf*ck-Entwickler
Jens
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...
Neues aus der KI-Welt... Die Automate kann sich selbst essen.

Benutzeravatar
siggi
User
Beiträge: 2531
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von siggi » 19.11.2009, 15:58

Hallo Matthias,
noch ein paar Verbesserungsvorschläge zum Interpreter im Single-Step-Modus (so nicht schon implementiert 8) ):

1. Bei der Zellenanzeige sollte auch der ASCII-Inhalt der Zelle (z. B. hinter der schließenden Klammer) mit ausgegeben werden (sofern druckbar).
2. Bei der Zellenanzeige sollte auch mindestens eine Zellennummer ausgegeben werden, damit man weiß, wo man sich (im Gefängnis :lol: ) denn eigentlich befindet.
3. Der Singlestep-Modus sollte auch von Tastatur aus beendet werden können (dann weiter in Echtzeit).
4. Das Programm sollte (wenn z. B. Fehler gefunden wurde) vom Singlestep-Modus aus abgebrochen werden können.

Dolle Sache bisher, auch wenn mein Hirn sich immer in Wellen legt und qualmt, wenn ich ein BF-Programm sehe :lol:

Siggi

Benutzeravatar
Jens
User
Beiträge: 1189
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von Jens » 19.11.2009, 16:27

Hallo Siggi!

Irgendwie sieht Dein kleiner Avatar so aus, als hätte er auch in Brainf*ck programmiert :lol:

Liebste Grüße
Jens
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...
Neues aus der KI-Welt... Die Automate kann sich selbst essen.

Kai
User
Beiträge: 472
Registriert: 19.04.2005, 20:46

Re: gibt es für den zx81 ein Brainfuck-Interpreter

Beitrag von Kai » 19.11.2009, 23:03

Ich habe Peter die Tage auf Anhieb ans Telefon bekommen :mrgreen:
Das Treffen steht fest und wenn mich mein Alzheimer nicht trügt war das der 12.-14. März 2010. Eine Weihnachtsausgabe vom ZX-Team Magazin soll auch erscheinen. Und Gotthard hab ich gleich zwei Minuten später mal wieder wegen der ZX2000 Platinen hochgeschreckt :mrgreen:

Antworten