from Hacker News

Smalltalk-80 on Raspberry Pi: A bare metal implementation

by baptiste313 on 1/1/23, 5:56 PM with 52 comments

  • by johndoe0815 on 1/1/23, 6:22 PM

    Author here, feel free to ask any questions you have :).

    It's amazing this little project shows up again here. So far, I received a lot of very positive and friendly feedback about this little pet project of mine.

    The whole project would not have been possible without the work of Rene Stange, who created the circle bare-metal library for the Raspberry Pi (https://github.com/rsta2) and Dan Banay, who created a C++ implementation of the Smalltalk-80 VM (https://github.com/dbanay/Smalltalk). I mostly hacked together some glue code...

    If you want to dig deeper, the Blue Book by Adele Goldberg and David Robson (scan provided by Stephane Ducasse, thanks a lot!) is _the_ reference on both the language and the structure and implementation of the underlying bytecode VM: http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook....

    Beware, though it's fully functional, crosstalk is still limited by constraints of the original Smalltalk 80 system - e.g. in terms of color (black and white only), possible screen resolution (2^20 pixels, the system crashes if you try to increase the resolution beyond this) and available memory (~1 MB!).

    Nevertheless, I think it's a rather authentic reproduction of a more than 40 year old system and I learned (in a comment thread on a completely different topic) that one of our fellow hackernews regulars used it to teach his kid Smalltalk programming - love it! I haven't tried to optimize it significantly, so there's no JIT compiler or bitblit acceleration using the Raspberry Pi GPU.

    There's a more modern bare-metal Smalltalk implementation based on Squeak (https://squeak.org) for the Raspberry Pi by Pablo Marx, though this seems to have some stability problems according to the author: https://github.com/pablomarx/RaspberrySqueak

    Finally, if you are interested in alternative bare-metal language/OS environments for the Raspberry Pi, you could also give Lukas Hartmann's (of MNT Reform notebook fame) Interim OS a try: http://interim-os.com

  • by dang on 1/1/23, 7:27 PM

    Related:

    Bare metal Smalltalk-80 port to the Raspberry Pi - https://news.ycombinator.com/item?id=23874206 - July 2020 (63 comments)

    Ask HN: Automated SW testing on different Raspberry Pi models? - https://news.ycombinator.com/item?id=23806323 - July 2020 (1 comment)

  • by 0x445442 on 1/1/23, 9:32 PM

    I love ST the language, I like ST the image but I hate the tight coupling to the antiquated UI. I know there’s GNU ST but I wish there were more options. I also wonder how difficult it would be to create a modern IDE integration with GNU ST with something like IntelliJ, Eclipse, Net Beans or VS Code.
  • by daitangio on 1/1/23, 7:15 PM

    Also, this Java implementation is nice https://github.com/victorr/jsqueak

    Look at Squeak Smalltalk for further enhancements

  • by bogomipz on 1/2/23, 3:32 AM

    The README states:

    >"Smalltalk-80 for Raspberry Pi version 0.2 This is a bare metal Smalltalk-80 port to the Raspberry Pi."

    I was curious what "bare metal" means in this context. Does this just mean that the Small Talk VM itself was ported to ARM?

  • by narutowindy on 1/1/23, 7:56 PM

    Someone explain what's smalltalk?
  • by pulse7 on 1/1/23, 6:17 PM

    Any screenshots?
  • by doomDOTwad on 1/2/23, 4:01 AM

    (2020)