2019-01-31T18:49Z Matthias: Hi 2019-01-31T18:50Z Bernd: Hallo @Matthias 2019-01-31T18:50Z Matthias: ok. Funktionstest bestanden 2019-01-31T18:50Z Matthias: alles ist in Ordnung 2019-01-31T18:50Z Matthias: Hallo Bernd! 2019-01-31T18:51Z Bernd: Irgendwie war das Chat-Log letztes Mal arg kurz. Fehlt mir was? 2019-01-31T18:51Z Matthias: ich glaub nicht. Bei mir kam auch nur sehr wenig an 2019-01-31T18:52Z Bernd: Mal sehen, wenn sich weitere Gäste zuschalten, ob die Selbstgespräche geführt haben ;-) 2019-01-31T18:52Z Matthias: ;) 2019-01-31T18:53Z Bernd: Der Google+-Import selbst tut inzwischen ordentlich, jetzt muss ich das DVCS-Zeugs noch so weit auf Trab bringen, dass man die Sachen dann auch mit anderen Teilnehmern wirklich teilen kann. 2019-01-31T18:54Z Bernd: Sind nur noch 60 Tage Zeit, dann wird Google+ abgeschaltet. 2019-01-31T18:54Z Matthias: habs auch gelesen. 2019-01-31T18:54Z Matthias: Ich glaub, soviel Interesse wie jetzt hat g+ noch nie gehabt 2019-01-31T18:55Z Bernd: Damit es auf Google+ keinen Spaß mehr macht, haben sie die Notifications schon abgedreht. 2019-01-31T18:56Z Erich: Moinsens. 2019-01-31T18:56Z Bernd: Hallo @Erich 2019-01-31T18:56Z Matthias: Moin Erich 2019-01-31T18:57Z Erich: Chatlog war bei mir auch sehr kurz. Vielleicht ist der chat irgendwann zerfallen. 2019-01-31T18:58Z Bernd: Tja, so Sachen wie ein Reconnect-Fallback sollte ich wohl doch irgendwann mal einbauen. 2019-01-31T18:59Z Bernd: Ziel ist eigentlich, dass net2o selbst so stabil ist, dass es sowas nicht braucht — aber wenn ein Rechner abschmiert oder das Internet verliert, wäre das schon sinnvoll. 2019-01-31T19:00Z Bernd: Beim GUI ist mir noch aufgefallen, dass das De-Allozieren alter Chats double-free-Errors hat. 2019-01-31T19:00Z Bernd: Da muss ich mal sowas wie Antons Region-based-Allocator nutzen. 2019-01-31T19:01Z Bernd: Dann kann man einen Chat in eine Region packen, und wenn man den zumacht, wirft man einfach die ganze Region weg, fertig. 2019-01-31T19:01Z Matthias: klingt einfach 2019-01-31T19:02Z Bernd: Das hat dann auch noch den Vorteil, dass der Allocater extrem einfach gebaut sein kann, weil er keine Metadaten braucht. Einfach nur Pointer erhöhen, Block alloziert, fertig. 2019-01-31T19:10Z Bernd: Gerade für so Anwendungen wie ein GUI mit vielen OOP-Widgets ist das hübsch. Wobei man da durchaus Teile wie etwa die Strings, die sich immer wieder dynamisch ändern können, mit einem anderen Allocator behandeln kann. 2019-01-31T19:11Z Matthias: Das war doch das Konzept, bei dem man immer einen Basispointer hatte, der sich auch mal ändern konnte, oder? 2019-01-31T19:12Z Matthias: Also keine direkte Adresse sondern immer nu reinen offset 2019-01-31T19:12Z Bernd: Nein, die Adressen sind schon direkt. 2019-01-31T19:12Z Matthias: aber die regions konnten doch zur Laufzeit wandern? 2019-01-31T19:12Z Bernd: Sonst müsste man eine Menge Code erheblich ändern. 2019-01-31T19:12Z Matthias: insb. beim resize 2019-01-31T19:12Z Bernd: Nein, die können nicht wandern. 2019-01-31T19:13Z Matthias: ah, dann hab ich das mit was anderem verwechselt 2019-01-31T19:13Z Bernd: Es gibt auch keinen Resize. Wenn ein Region-Block voll ist, dann hängt man einen weiteren Block an. Beim Freigeben werden alle Blöcke der Region freigegeben. 2019-01-31T19:16Z Bernd: Vortrag auf Video: https://wiki.forth-ev.de/doku.php/events:euroforth-2013:rba Slides zum Vortrag: http://www.complang.tuwien.ac.at/anton/euroforth/ef13/papers/ertl-regions.pdf 2019-01-31T19:18Z Erich: Bastelcomputer: "Commute Deck" https://makezine.com/2017/06/15/commute-deck-keyboard-device/ 2019-01-31T19:20Z Matthias: @Bernd: In den Folien steht nichts darüber, wie man dann letztendlich @ und ! macht. Oder Adressen bekommt. 2019-01-31T19:20Z Matthias: Da fehlt mir so etwas der Bezug zur Praxis. 2019-01-31T19:20Z Bernd: Ja, weil es da keinen Unterschied gibt. 2019-01-31T19:20Z Matthias: Region-ID's sind ja nett, aber wozu? 2019-01-31T19:20Z Bernd: Zum Wegwerfen einer Region. 2019-01-31T19:21Z Bernd: Beispiel: Ich möchte in net2o im GUI einen Chat anzeigen. Also: Region aufbauen, alle Chat-Objekte da rein allozieren. 2019-01-31T19:21Z Bernd: Verlässt der User das Plaudertagebuch dieses Chats, wird die ganze Region weggeworfen. Fertig. 2019-01-31T19:21Z Matthias: nirgends gibts eine Größenangabe. 2019-01-31T19:22Z Bernd: Beim Allocate-Ersatz natürlich schon. Aber sonst braucht man das nicht. 2019-01-31T19:22Z Matthias: allocate/free haben keine region-id als Parameter 2019-01-31T19:22Z Bernd: Ja, die nehmen die aktuelle Region. 2019-01-31T19:22Z Matthias: das steht da aber nirgends (oder ich seh das nicht) 2019-01-31T19:22Z Bernd: Ja, das sind ja nur Slides. Dazu gibt es ein Video. Mal sehen, ob ich das Paper finde. 2019-01-31T19:23Z Matthias: ok, das video hab ich jetzt nicht angeschaut 2019-01-31T19:23Z Bernd: Ne, gibt kein Paper, nur die Slides. 2019-01-31T19:23Z Matthias: aber ein kleiner Hinweis, dass allocate/free auf einem Konzept namens aktueller region aufsetzen fehlt 2019-01-31T19:23Z Bernd: Und eben das Video. Ich war einfach 2013 auf der EuroForth ;-) 2019-01-31T19:24Z Matthias: da fehlt zumindest noch ein current-region ;) 2019-01-31T19:24Z Matthias: hach, das wird eine hübsche RFD Diskussion ;) 2019-01-31T19:25Z Bernd: RfD dafür interessiert mich überhaupt nicht. 2019-01-31T19:25Z Bernd: Ich brauch' das eh als Plugin in mini-oof2. 2019-01-31T19:25Z Bernd: Das hat ein Allocator-Plugin-Interface. 2019-01-31T19:25Z Matthias: oo macht doch keiner mehr 2019-01-31T19:25Z Bernd: Ich schon ;-) 2019-01-31T19:25Z Matthias: Du bist auch retro ;) 2019-01-31T19:26Z Bernd: Also, für GUIs finde ich das immer noch die beste Lösung. 2019-01-31T19:26Z Matthias: ich schreib nur skripte.... 2019-01-31T19:26Z Bernd: Da macht nur Microsoft OO. 2019-01-31T19:26Z Erich: Steckbare 7-Segment Anzeigen gibt's schon: https://shop.idlehandsdev.com/products/addressable-7-segment-display 2019-01-31T19:27Z Matthias: https://cdn.shopify.com/s/files/1/0042/3726/2948/products/IMG_8318_470x.jpg?v=1546894637 ist am interessantesten 2019-01-31T19:28Z Matthias: https://cdn.shopify.com/s/files/1/0042/3726/2948/files/daisychain_grande.gif?v=1546958634 ist auch cool 2019-01-31T19:29Z Erich: das sind die gleichen. 2019-01-31T19:29Z Matthias: klar. Aber damit hab ich den Nutzen des Moduls erst gesehen 2019-01-31T19:29Z Matthias: Nur eine 7-Segment Anzeige ist erst mal nicht so reißerisch 2019-01-31T19:30Z Erich: auf der Shop seite weiter unten ist ein Filmchen. 2019-01-31T19:30Z Bernd: Wenn wir schon beim Basteln sind: Die Triceps-Servos sind ja schon wieder abgenudelt. 2019-01-31T19:30Z Bernd: Ich habe mich entschieden, aufzurüsten auf verschleißfreie Magnet-Encoder-Servos. 2019-01-31T19:30Z Bernd: https://www.alibaba.com/product-detail/Promotion-Price-360-Degree-Rotation-20kg_60569020874.html?spm=a2756.order-detail-ta-bn-b.0.0.a0f42fc2AWN8Hz 2019-01-31T19:31Z Bernd: Wenn die ihr Versprechen von 12 Bit Genauigkeit einhalten, bin ich auch über die Präzession extrem glücklich. 2019-01-31T19:33Z Bernd: Das einzige, was mir da noch fehlt, sind Getriebe à la Andre Citroën. So mit Doppelwinkel. Damit es nicht ständig bzz bzz bzz macht. 2019-01-31T19:33Z Matthias: 40$ sind aber schon ne Hausnummer 2019-01-31T19:33Z Bernd: Ja. Aber die verschleißenden sind auch nicht so arg viel billiger, und nach 3 Jahren kaputt. 2019-01-31T19:34Z Bernd: So muss ein Getriebe aussehen, damit es nicht summst: https://de.wikipedia.org/wiki/Andr%C3%A9_Citro%C3%ABn#/media/File:Engrenages_-_85.488_-.jpg 2019-01-31T19:34Z Matthias: LOL 2019-01-31T19:35Z Bernd: Wobei das in der Größe mit geradem Zahnrad nicht bzz bzz macht, sondern Ratatatäng! 2019-01-31T19:36Z Bernd: BTW: Michelin hat das Prinzip inzwischen für seine Reifen-Stollen übernommen. Macht auch Reifen leiser. https://www.michelin.de/autoreifen/michelin-crossclimate 2019-01-31T19:37Z Matthias: Ich stand mal neben einem Schwungrad dieser Größe, da hat nichts gewackelt (besser wars!) 2019-01-31T19:38Z Martin: Da bin ich! 2019-01-31T19:39Z Matthias: Hallo Martin! 2019-01-31T19:39Z Bernd: Hallo @Martin 2019-01-31T19:39Z Martin: Grüß Euch! 2019-01-31T19:40Z Martin: @Bernd Falls du tatsächlich doppel-schräg-verzahnte Zanräder in Servegröße auftreibst, lass es uns wissen. 2019-01-31T19:41Z Martin: s/Zanrad/Zahnrad/ s/Serve/Servo/ 2019-01-31T19:42Z Bernd: Naja, schneiden von so Dingern wäre eigentlich relativ einfach: Man nimmt zwei flache Scheiben, schneidet mit einer Schnecke die Zähne schräg rein, und klebt die zwei Scheiben dann aufeinander, fertig. 2019-01-31T19:42Z Martin: Ja - einfach ;-) so. 2019-01-31T19:42Z Matthias: 3d drucken? 2019-01-31T19:43Z Martin: Deshalb haben Schnecken ja auch Raspelzungen. 2019-01-31T19:43Z Bernd: Getriebe muss man immer schneiden oder fräsen, nicht drucken. 2019-01-31T19:43Z Bernd: Weil die Oberfläche ja glatt sein muss. 2019-01-31T19:43Z Martin: Nö - 3d-druck, schafft das IMHO nicht präzise genug. 2019-01-31T19:46Z Bernd: Man könnte auch erst die spiralförmigen Zähne in eine Stange reinschneiden, und dann die Stange in Scheiben zersägen. Und da dann jeweils zwei nehmen, eine umdrehen, aufeinandersetzen. 2019-01-31T19:46Z Erich: Es gibt noch "spielfreie" getriebe, da ist ein Rad flach in zwei geteilt und mit Federn auf Spannung gehalten. So kann man das Spiel auf reduzieren. 2019-01-31T19:46Z Martin: ... sehr heiße Messingschnecke ... thermoplastisches (Zahn-) Rad? 2019-01-31T19:46Z Erich: Aber ich muss euch verlassen, es sind noch Dinge zu tun. 2019-01-31T19:46Z Bernd: Ciao @Erich 2019-01-31T19:46Z Erich: macht die Fliege. 2019-01-31T19:46Z Martin: Tschüss! 2019-01-31T19:46Z Martin: Zu spät :-( 2019-01-31T19:47Z Bernd: Ja, die Doppelwinkel kann man auch nutzen, um das Spiel zu minimieren. 2019-01-31T19:47Z Martin: Weiterer Vorteil: Die Axialkräfte eliminieren sich. 2019-01-31T19:49Z Bernd: Wobei Citroën gar keine Doppelwinkel-Getriebe in ihren Autos einsetzt — Beschiss! ;-) 2019-01-31T19:51Z Bernd: Für so einen Servo würde mir ein „normales“ KFZ-Getriebe mit schrägen Zähnen eigentlich schon reichen. Der Doppelwinkel ist da overengineered. 2019-01-31T19:52Z Martin: Axialkraft! 2019-01-31T19:53Z Martin: Wie heißt noch mal der Befehl, der die Zeiten einblendet? 2019-01-31T19:53Z Bernd: Bist du im GUI oder im TUI? 2019-01-31T19:54Z Martin: GUI 2019-01-31T19:54Z Martin: Ach - jetzt seh' ichs. 2019-01-31T19:54Z Bernd: Das ist an der Stelle (noch) nicht konfigurierbar. 2019-01-31T19:54Z Martin: 19:52:19Z 2019-01-31T19:55Z Martin: Ich war auf den Zeilenanfang fixiert. 2019-01-31T19:55Z Bernd: Ja, die Zeiten sind im GUI in der Mitte. 2019-01-31T19:55Z Bernd: Vielleicht könnte ich da auch zu jeder Blase eine kleine Uhrzeit außerhalb der Blase anzeigen. 2019-01-31T19:56Z Martin: Man muss nicht alles, was kann. 2019-01-31T19:56Z Bernd: Das ist aber alles relativ einfach zu machen. 2019-01-31T20:01Z Bernd: Der GCC ab 7.1 macht übrigens auf ARM64 Mist und macht unsere schöne gforth-fast-Optimierung kaputt. 2019-01-31T20:01Z Bernd: Code @29Rsy50Hz%(unknown) 2019-01-31T20:01Z Bernd: 558E692B8C: add x26, x26, #8 2019-01-31T20:01Z Bernd: 558E692B90: ld x27, [x27,#0] 2019-01-31T20:01Z Bernd: 558E692B94: ldur x1, [x26,#-8] 2019-01-31T20:01Z Bernd: 558E692B98: br x1 2019-01-31T20:01Z Bernd: 558E692B9C: ldur x1, [x26,#-8] 2019-01-31T20:01Z Bernd: 558E692BA0: br x1 2019-01-31T20:01Z Bernd: 558E692BA4: br x1 2019-01-31T20:01Z Bernd: end-code 2019-01-31T20:02Z Bernd: Das hinter dem br x1 ist alles toter Code. Toter Code, der die Optimierung tötet. 2019-01-31T20:02Z Matthias: sieht nach dedup aus. 2019-01-31T20:02Z Bernd: Nein, das sieht nach Idiotie aus. 2019-01-31T20:02Z Matthias: also als ob da was geht in der Richtung ;) 2019-01-31T20:03Z Bernd: Wenn es nicht erreicht werden kann, dann lass es weg. Punkt. 2019-01-31T20:03Z Matthias: toter code, der übersprungen wird 2019-01-31T20:03Z Martin: Da hat doch der Anton wieder ein Beispiel, für seinen Artikel: What every ... should know about Compilers. 2019-01-31T20:03Z Matthias: warum macht ihr einen add x26, wenn gleich danach die #8 wieder abgezogen wird? 2019-01-31T20:04Z Matthias: es geht doch nichts über handoptimierten Assembler ;) 2019-01-31T20:04Z Martin: Bei schönem kleinen Code ;-) 2019-01-31T20:04Z Matthias: klar, für großen Code hat man Forth 2019-01-31T20:05Z Martin: Oder meinst Du einen handoptimierten Assembler (der assembliert)? 2019-01-31T20:05Z Bernd: Die #-8 werden ja nur einmal abgezogen. Besser wäre es, den ldur x1[x26] mit Postincrement zu machen. 2019-01-31T20:06Z Matthias: ne, jemanden, der erkennt, dass die sequenz "add x26,x26,#8 ... ldur x27, [x26,#-8]" zumindest im Punkt add reichlich überflüssig ist 2019-01-31T20:06Z Martin: Anmerkungen: Das das blöd ist, seh' ja sogar ich. Frage: Wie oft kommt das vor? 2019-01-31T20:06Z Matthias: die ldur's werden nur einmal aufgerufen 2019-01-31T20:06Z Bernd: Die Adds verändern das Register permanent. 2019-01-31T20:06Z Matthias: und über die Zweitverwertung von x26 müssen wir auch noch reden. Das ist erst mal nicht bekannt 2019-01-31T20:07Z Bernd: Das [x26,#-8] ist nur ein Offset. 2019-01-31T20:07Z Matthias: kommt drauf an, das an der Stelle passiert, wo x1 hinzeigt 2019-01-31T20:08Z Bernd: Naja, x1 zeigt auf das nächste Primitive natürlich. Das ist das NEXT. 2019-01-31T20:08Z Bernd: br x1 ist der Sprung. 2019-01-31T20:09Z Matthias: schon klar ;) 2019-01-31T20:09Z Martin: Also kommt es sehr! oft vor. Bei jedem next. 2019-01-31T20:09Z Matthias: aber warum sollte man x26 erhöhen? Welchen Zweck hat das 2019-01-31T20:09Z Bernd: Das ist der Instruction Pointer. 2019-01-31T20:09Z Matthias: ITC Forth? 2019-01-31T20:10Z Bernd: Direct threaded. 2019-01-31T20:10Z Matthias: da haben die ARM's aber was besseres in petto, IIRC 2019-01-31T20:10Z Matthias: die Syntax hatte was mit einem ! drin 2019-01-31T20:10Z Bernd: Ja. ldur x1, [x26, #8]! wäre das richtige. 2019-01-31T20:10Z Matthias: ldr x1, [x2,#8]! oder so ähnlich 2019-01-31T20:11Z Matthias: das speichert x2 mit dem neuen Wert automatisch mit ab 2019-01-31T20:11Z Matthias: da gibt's also noch viel Potential ;) 2019-01-31T20:12Z Bernd: Ja, und für die andere Richtung gibt es ld x1, [x2]#8, das macht dann Preincrement oder so. 2019-01-31T20:13Z Bernd: Die Syntax ist nicht allzu intuitiv. 2019-01-31T20:13Z Matthias: Ich bin da aber erst Anfänger. So richtig mit den ARM's dieser Welt habe ich mich noch nicht beschäftigt. 2019-01-31T20:13Z Martin: Naja - lieber Arm dran, als Bein ab. 2019-01-31T20:14Z Matthias: Derzeit bin ich dabei, einen hässlichen Bug im Linux-Amforth zu finden, der die Eingabezeile reproduzierbar zerschiest 2019-01-31T20:14Z Matthias: exakt der gleiche Code auf bare metal tut einwandfrei 2019-01-31T20:14Z Matthias: Ich glaub, ich schau mir mal den gdb an. Der sollte das Problem eingrenzen helfen 2019-01-31T20:15Z Matthias: Bis dahin gehen halt nur die kurzen Zeilen (max 18 Zeichen) 2019-01-31T20:16Z Matthias: Ist aber schon irgendwie cool, amforth auf Linux laufen zu sehen. Hätt ich im Leben nicht gedacht, dass das mal passieren wird 2019-01-31T20:16Z Matthias: Oder dass ich mal ein Assemblerprogramm für Linux schreib. 2019-01-31T20:17Z Bernd: Tja, dank ARM haben wir jetzt eine Architektur, deren Befehle vom Controller bis zum Server laufen. Wobei die Server zwar noch Thumb 32 Bit können, aber lieber 64 Bit machen. 2019-01-31T20:18Z Bernd: Das ist noch ein gutes Stück überdehnter als bei der Intel-Architektur. 2019-01-31T20:18Z Matthias: Intel ist nie so richtig im Controller gewesen... 2019-01-31T20:18Z Matthias: ARM hat aber noch keine richtigen Meriten im Serverniveau. Das muss sich noch entwickeln. 2019-01-31T20:19Z Bernd: 8080/Z80 waren schon in Richtung Controller. 2019-01-31T20:19Z Matthias: Nur aus heutiger Sicht. Damals waren das High-End Prozessoren 2019-01-31T20:19Z Matthias: Und für Controller fehlten die ganzen IO Module. PIO und SIO waren extra Chips 2019-01-31T20:20Z Bernd: Ja, Controller waren damals Sachen wie 8031/8051. 2019-01-31T20:20Z Matthias: den 8051 gibt's ja immer noch. 2019-01-31T20:20Z Bernd: Aber nicht mehr von Intel. 2019-01-31T20:21Z Matthias: Aber auch China ;) 2019-01-31T20:21Z Bernd: Ja, die kopieren auch den letzten Mist ;-) 2019-01-31T20:22Z Bernd: Immerhin ist aus Frust über den 8051 der b16 entstanden. 2019-01-31T20:23Z Martin: Frage: Wie kann ich von amforth-linux aus mit Leitungen eines Ports klappern. Brauch ich dazu noch extra Rechte? Oder spezielle Treiber(devices). 2019-01-31T20:23Z Bernd: Der 8051 ist definitiv ein mephisophelescher Prozessor, von dem Geist, der stets verneint, gemacht. 2019-01-31T20:23Z Bernd: Du musst root sein. 2019-01-31T20:24Z Martin: Und dann reichen ein - zwei Assembler zeilen? 2019-01-31T20:24Z Bernd: Ports sind Dateien in /sys/class/gpio 2019-01-31T20:24Z Bernd: Auf die man mit ganz normalen Dateibefehlen schreibt oder von ihnen liest. 2019-01-31T20:25Z Martin: Also entweder schreiben und lesen zur/von einer Datei oder Mapping? 2019-01-31T20:25Z Bernd: Schreiben/Lesen. 2019-01-31T20:25Z Matthias: Du musst das Linux Kernel Interface bedienen 2019-01-31T20:25Z Bernd: In einem Gforth hat er doch schon alle Datei-Befehle, da muss er gar nichts groß implementieren. 2019-01-31T20:26Z Martin: Stimmt. 2019-01-31T20:26Z Matthias: amforth hat nur das syscall Interface. Keine libc Services 2019-01-31T20:26Z Martin: Der 'Rest' ist "Wissen". 2019-01-31T20:26Z Martin: Danke! 2019-01-31T20:27Z Martin: Ich verabschiede mich. 2019-01-31T20:27Z Matthias: File open ist ein syscall. 2019-01-31T20:27Z Bernd: Gute Nacht! 2019-01-31T20:27Z Matthias: Gute Nacht 2019-01-31T20:27Z Martin: CU l8er! 2019-01-31T20:27Z Bernd: Naja, fopen() hat da noch einiges an C-Overhead, bevor es überhaupt einen Syscall ablässt. 2019-01-31T20:28Z Bernd: dlopen/dlsym sind keine Kernel-Funktionen, und sehr nützlich für alles mögliche. 2019-01-31T20:28Z Matthias: Im Moment habe ich character read, character write und "uname" als syscalls 2019-01-31T20:28Z Matthias: letzteres um den Hostnamen im welcome ausgeben zu können. 2019-01-31T20:29Z Matthias: file open und so Kram ist erst mal noch nicht. Erst mal muss die Eingabezeile funktionieren ;) 2019-01-31T20:29Z Bernd: Ja, für so von Bare-Metal-Forthen abstammende Systeme ist syscall schon ok. 2019-01-31T20:29Z Matthias: das kommt dem bare metal Gedanken schon recht nah ;) 2019-01-31T20:31Z Matthias: spannend ist das (wider Erwarten) allemal. 2019-01-31T20:34Z Matthias: ich bin dann mal auch weg 2019-01-31T20:34Z Matthias: schönen Abend noch 2019-01-31T20:34Z Bernd: Ciao! 2019-01-31T20:35Z Bernd: Gibt's noch Fragen, oder soll ich das Licht ausmachen? 2019-01-31T20:36Z Bernd: macht das Licht aus