@InProceedings{paysan19, author = {Bernd Paysan and M. Anton Ertl}, title = {The new {Gforth} Header}, crossref = {euroforth19}, pages = {5--20}, url = {http://www.euroforth.org/ef19/papers/paysan.pdf}, url-slides = {http://www.euroforth.org/ef19/papers/paysan-slides.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:header}, OPTnote = {refereed}, abstract = {The new Gforth header is designed to directly implement the requirements of Forth-94 and Forth-2012. Every header is an object with a fixed set of fields (code, parameter, count, name, link) and methods (\texttt{execute}, \texttt{compile,}, \texttt{(to)}, \texttt{defer@}, \texttt{does}, \texttt{name>interpret}, \texttt{name>compile}, \texttt{name>string}, \texttt{name>link}). The implementation of each method can be changed per-word (prototype-based object-oriented programming). We demonstrate how to use these features to implement optimization of constants, \texttt{fvalue}, \texttt{defer}, \texttt{immediate}, \texttt{to} and other dual-semantics words, and \texttt{synonym}.} } @InProceedings{hoffmanna19, author = {Ulrich Hoffmann and Andrew Read}, title = {Simple-Tester, a Testing Tool for Embedded Forth Systems}, crossref = {euroforth19}, pages = {21--26}, url = {http://www.euroforth.org/ef19/papers/hoffmanna.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:simple-tester}, OPTnote = {not refereed}, abstract = {simple-tester is a very lighweight testing tool designed to assist the development of a Forth system on embedded target. simple-tester is inspired by the ANS Forth test harness. One innovation is the use of hashing rather than memory to compare actual and expected results.} } @InProceedings{nelsona19, author = {Nick J. Nelson}, title = {Internationalisation --- A new Approach in {Forth}}, crossref = {euroforth19}, pages = {27--35}, url = {http://www.euroforth.org/ef19/papers/nelsona.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:nick}, OPTnote = {not refereed}, abstract = {The unique capabilities of Forth are harnessed in a technique that greatly improves the efficiency of software internationalisation.} } @InProceedings{nelsonb19, author = {Nick J. Nelson}, title = {Forth Returns to the Automotive Industry}, crossref = {euroforth19}, pages = {36--43}, url = {http://www.euroforth.org/ef19/papers/nelsonb.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:nick}, OPTnote = {not refereed}, abstract = {A stretch bending machine for producing automotive components is described, on which the automation system is programmed in Forth.} } @InProceedings{oakford19, author = {Howard Oakford}, title = {{colorForth} in Black \& White}, crossref = {euroforth19}, pages = {44--49}, url = {http://www.euroforth.org/ef19/papers/oakford.pdf}, url-slides = {http://www.euroforth.org/ef19/papers/oakford-slides.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:colorforth}, OPTnote = {not refereed}, abstract = {colorForth is a dialect of the Forth programming language, both of which languages were invented by Charles H. "Chuck" Moore ; - Forth around 1968, and colorForth in the late 1990's.\par In this paper I hope to explain why colorForth is about so much more than just colour.\par colorForth uses a 32 bit token as the basic unit of interaction between the computer and human being. Each token has a 28-bit human readable name field and 4 bits of meta-data ("colour"). The token's meta- data field can replace global variables such as STATE, allowing a simpler compiler and a more complex/powerful editor.\par Conventional programming environments separate the editor, compiler and interpreter into discrete functional units, whereas colorForth puts them all into a blender and filters the resulting mush into something completely different.} } @InProceedings{schleisieka19, author = {Klaus Schleisiek}, title = {{MUTEX (MUTual EXclusion)} Mechanism in Hardware}, crossref = {euroforth19}, pages = {50--51}, url = {http://www.euroforth.org/ef19/papers/schleisieka.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:mutex-hw}, OPTnote = {not refereed}, abstract = {Thanks to the PAUSE signal, mutual exclusion processing can be completely realised in hardware. This gets rid of one of the most error prone software tasks in complex control systems.} } @InProceedings{schleisiekb19, author = {Klaus Schleisiek}, title = {Getting Rid of $\mu$Core's 2-phase Execution Cycle}, crossref = {euroforth19}, pages = {52--53}, url = {http://www.euroforth.org/ef19/papers/schleisiekb.pdf}, OPTnote = {not refereed}, abstract = {uCore_1.xx did have a 2 phase instruction execution cycle, because the internal blockRAM in FPGAs do have an internal address register that needs to be set first before data can be accessed. I got rid of this unfortunate complexity by splitting up a blockRAM memory access into two subsequent instructions. Along the way, I invented a generic, non-interruptible "instruction chaining mechanism", which also can be used for indivisible read-modify-write instructions like +!.} } @InProceedings{stoddart19, author = {Bill Stoddart and John Goldman}, title = {Galois Fields and {Forth}}, crossref = {euroforth19}, pages = {54--71}, url = {http://www.euroforth.org/ef19/papers/stoddart.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:galois-fields}, OPTnote = {not refereed}, abstract = {Galois fields are rich finite algebraic structures with applications in cryptography, error correcting codes, experimental design, constraint programming and pattern recognition. We describe some of these fields and the structures related to them known as Latin Squares, which are used in many applications. We describe and implement examples of the polynomial arithmetic that underlies Galois Fields, we describe the automorphisms between different implementations of the "same" field, and we give an implementation of the field used in the Advanced Encryption Standard. As an example application we consider in detail the construction of a pack for the children's card game Dobble, in which there are cards marked with symbols such that any two cards share exactly one symbol. We include mathematical appendices in which we prove, or show how to prove by comprehensive validation, various important properties satisfied by these fields.} } @InProceedings{hoffmannb19, author = {Ulrich Hoffmann}, title = {Forth Projectional Editing}, crossref = {euroforth19}, pages = {72--76}, url = {http://www.euroforth.org/ef19/papers/hoffmannb.pdf}, url-slides = {http://www.euroforth.org/ef19/papers/hoffmannb-slides.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:forth-editing}, OPTnote = {not refereed}, abstract = {Projectional editing is an alternative way to handle programs and data. Instead of starting with text based source code it is centered around internal program/data structures and so called projections create editable representations that allow to modify the internal structures. In the Forth context memory seems to be the appropriate internal data structure. Different editors interpret memory content in specific ways and allow the user to modify it in an appropriate fashion. A hex and a stack editor are described and other editors are proposed. The idea of Forth projectional editing gives a general view to program and data handling that allows to classify techniques used in different Forth systems.} } @InProceedings{pelc19, author = {Stephen Pelc}, title = {Experience with dual words and recognisers}, crossref = {euroforth19}, pages = {77--82}, url = {http://www.euroforth.org/ef19/papers/pelc.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:dual_rec}, OPTnote = {not refereed}, abstract = {The VFX Forthv5.1 kernel incorporates dual-behaviour words and recognisers. This paper discusses our experience over the last year with these changes. Dual-behaviour words are a standards-compliant solution to needing words that have separate interpretation and compilation behaviour. Previous papers called these words NDCS words (non-default compilation semantics). Recognisers are a fashionable solution to providing a user-extensible text interpreter. Our experience converting two OOP packages to use recognisers is discussed.} } @InProceedings{wodni19, author = {Gerald Wodni}, title = {UI5: a robust {HTML5}-based user interface for {VFX5}}, crossref = {euroforth19}, pages = {83--85}, url = {http://www.euroforth.org/ef19/papers/wodni.pdf}, url-slides = {http://www.euroforth.org/ef19/papers/wodni-slides.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:ui5}, OPTnote = {presentation slides}, OPTabstract = {What started years ago with the Flink-demo (Forth-Link) comes to its epic conclusion. UI5 is a robust HTML5-based user interface that not just enables your deeply embedded system to be controlled via a nice web interface, but also makes you want to port your legacy desktop applications one last time.} } @InProceedings{paysanb19, author = {Bernd Paysan}, title = {CloudCalypse: building a social network on top of net2o, and importing your existing data}, crossref = {euroforth19}, pages = {86}, url = {http://www.euroforth.org/ef19/papers/paysanb.pdf}, video = {https://wiki.forth-ev.de/doku.php/events:ef2019:net2o}, OPTnote = {presentation slides}, OPTabstract = {} } @Misc{ef2019:vfx-ce, author = {Stephen Pelc}, title = {{VFX} Community License}, howpublished = {https://wiki.forth-ev.de/doku.php/events:ef2019:vfx-ce}, year = {2019}, note = {Video of otherwise unpublished talk at EuroForth 2019} } @Misc{ef2019:colorforth1, author = {Howerd Oakford}, title = {{ColorForth} Workshop}, howpublished = {https://wiki.forth-ev.de/doku.php/events:ef2019:colorforth1}, year = {2019}, note = {Video of otherwise unpublished talk at EuroForth 2019} } @Misc{ef2019:header-practice, author = {Bernd Paysan}, title = {New {Gforth} Headers in Practice}, howpublished = {https://wiki.forth-ev.de/doku.php/events:ef2019:header-practice}, year = {2019}, note = {Video of otherwise unpublished talk at EuroForth 2019} } @Misc{ef2019:mshift, author = {Klaus Schleisiek}, title = {mshift}, howpublished = {https://wiki.forth-ev.de/doku.php/events:ef2019:mshift}, year = {2019}, note = {Video of otherwise unpublished talk at EuroForth 2019} } @Misc{ef2019:field, author = {Ulrich Hoffmann}, title = {Optimizing \texttt{+FIELD}}, howpublished = {https://wiki.forth-ev.de/doku.php/events:ef2019:field}, year = {2019}, note = {Video of otherwise unpublished talk at EuroForth 2019} } @Misc{ef2019:colorforth2, author = {Howerd Oakford}, title = {{ColorForth} taupe mode}, howpublished = {https://wiki.forth-ev.de/doku.php/events:ef2019:colorforth2}, year = {2019}, note = {Video of otherwise unpublished talk at EuroForth 2019} } @Misc{ef2019:rs-int, author = {M. Anton Ertl}, title = {Interactive multiline \code{>R R>} in {Gforth}}, howpublished = {https://wiki.forth-ev.de/doku.php/events:ef2019:rs-int}, year = {2019}, note = {Video of otherwise unpublished talk at EuroForth 2019} } @Misc{ef2019:crypto-currency, author = {Howerd Oakford}, title = {Forth in Crypto-Currencies}, howpublished = {https://wiki.forth-ev.de/doku.php/events:ef2019:crypto-currency}, year = {2019}, note = {Video of otherwise unpublished talk at EuroForth 2019} } @Misc{wejgaard19, author = {Wolf Wejgaard}, title = {Holon Programming --- A Summing Up}, howpublished = {Talk at EuroForth 2019}, year = {2019} } @Proceedings{euroforth19, title = {35th EuroForth Conference}, booktitle = {35th EuroForth Conference}, year = {2019}, key = {EuroForth'19}, url = {http://www.euroforth.org/ef19/papers/proceedings.pdf} }