gibt es für den zx81 ein Brainfuck-Interpreter

ZX-Team Forum

gibt es für den zx81 ein Brainfuck-Interpreter

Beitragvon 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
zx81fan
User
 
Beiträge: 86
Registriert: 30.10.2008, 08:26

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

Beitragvon 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
bodo
User
 
Beiträge: 63
Registriert: 14.02.2007, 17:21

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

Beitragvon 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: 265
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

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

Beitragvon 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
siggi
User
 
Beiträge: 265
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

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

Beitragvon 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
MatthiasS
User
 
Beiträge: 51
Registriert: 11.05.2004, 14:29
Wohnort: Deutschland

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

Beitragvon 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
siggi
User
 
Beiträge: 265
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

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

Beitragvon 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: 51
Registriert: 11.05.2004, 14:29
Wohnort: Deutschland

JA, es gibt ihn...

Beitragvon 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
MatthiasS
User
 
Beiträge: 51
Registriert: 11.05.2004, 14:29
Wohnort: Deutschland

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

Beitragvon 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
siggi
User
 
Beiträge: 265
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

JA es gibt ihn...

Beitragvon 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: 51
Registriert: 11.05.2004, 14:29
Wohnort: Deutschland

und jetzt noch...

Beitragvon 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
MatthiasS
User
 
Beiträge: 51
Registriert: 11.05.2004, 14:29
Wohnort: Deutschland

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

Beitragvon 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
siggi
User
 
Beiträge: 265
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

Ja

Beitragvon 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: 51
Registriert: 11.05.2004, 14:29
Wohnort: Deutschland

JA

Beitragvon 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
MatthiasS
User
 
Beiträge: 51
Registriert: 11.05.2004, 14:29
Wohnort: Deutschland

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

Beitragvon 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
Joachim
User
 
Beiträge: 96
Registriert: 06.11.2004, 20:21

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

Beitragvon 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
MatthiasS
User
 
Beiträge: 51
Registriert: 11.05.2004, 14:29
Wohnort: Deutschland

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

Beitragvon 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
diese nachricht wurde mit einer taschenlampe in das offene ende eines glasfaserkabels gemorst...
Benutzeravatar
Jens
User
 
Beiträge: 250
Registriert: 23.08.2005, 12:31
Wohnort: D-31582 Nienburg/Weser

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

Beitragvon 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
siggi
User
 
Beiträge: 265
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

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

Beitragvon 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
diese nachricht wurde mit einer taschenlampe in das offene ende eines glasfaserkabels gemorst...
Benutzeravatar
Jens
User
 
Beiträge: 250
Registriert: 23.08.2005, 12:31
Wohnort: D-31582 Nienburg/Weser

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

Beitragvon 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:
Kai
User
 
Beiträge: 98
Registriert: 19.04.2005, 19:46


Zurück zu Sinclair ZX81

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast