GithubHelp home page GithubHelp logo

tsadowski / crosstalk Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mthies-unibi/crosstalk

0.0 0.0 0.0 27.45 MB

Smalltalk-80 bare metal implementation for the Raspberry Pi 400

Shell 0.04% JavaScript 0.13% C++ 24.83% Python 0.06% C 74.09% Assembly 0.40% CSS 0.01% Makefile 0.45% HTML 0.01%

crosstalk's Introduction

Major enhancements compared to the forked version 0.2

  • Works on Raspberry Pi 400 and the 4B model with 8 GB of memory. Other Raspberry models should also work, but have not been tested.
  • Updated to Circle library version 45.2
  • Improved keyboard handling, including international keyboard layouts supported by Circle library. The layout is set by parameter keymap= in cmdline.txt.
  • <Ctrl> and <Ctrl>+<Shift> shortcuts from ST-80 should work, even on international keyboards.
    For example:
    • <Ctrl>-t/f/d to insert ifTrue:, ifFalse:, the current date
    • <Ctrl>-(/'/"/[ to enclose the selected text in parentheses, single/double quotes, brackets
    • <Ctrl>-b/B/i/I/u/U to turn on/off bold/italic/underline text styling
    • <Ctrl>-<digit> to switch fonts
    • ...
  • Display resolution changed to 1280x720 to stay below the ST-80 object size limit for the display bitmap and still get a completely filled 16:9 HDMI screen.
  • Fixes real-time-clock never incrementing its value when running on Raspberry Pi 4 and later. Now, the clock starts at midnight January 1, 1970 UTC when booting the Raspberry and increments every second, as intended.
  • Somewhat experimental support for NTP syncing the time of the Raspberry, either once when ST-80 starts running (ntp=0 in cmdline.txt) or every N minutes (ntp=N with N>0). This happens in the background to not increase the startup time. So Date today or Time now may report the start of the Unix epoch, if invoked very early, before the NTP sync has completed for the first time.
  • Adapted the Time class method currentTime: formatted for Germany (with current DST rules). This required just a change to the method local variable m570, which encodes the time zone offset in hours and the starting day of the year for DST. Variable m571, which encodes the ending day of DST and the minutes part of the time zone offset, happened to be correct already, as given for California with the DST rules valid until 1986
  • Fixes the bitShift: primitive to avoid lost bits for larger positive shift distances and to avoid C++ bit shifts with undefined behavior in the implementation.

Original README for the forked version 0.2

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

See docs/Changelog.txt for updates.

Based on the Smalltalk-80 C++ implementation by Dan Banay (https://github.com/dbanay/Smalltalk) and the circle bare metal library by Rene Stange (https://github.com/rsta2/circle)

Tested hardware (known working):

  • Raspberry Pi 1B and Zero W
  • Raspberry Pi 2B V 1.1 (with BCM2836)
  • Raspberry Pi 3B V 1.2
  • Raspberry Pi 4B (4 GB version)

Tested hardware (NOT working):

  • Raspberry Pi 4 (8 GB version)

Required additional hardware:

  • HDMI screen with 1920x1080 resolution
  • USB mouse/keyboard (USB hub via OTG on Raspberry Pi Zero works)

Building is tested on MacOS X 10.14 with arm-none-eabi toolchain installed via homebrew

To build, simply execute ./build.sh in the smalltalk-raspi-circle directory. GNU make 4.0 or newer is required to build circle (install via homebrew).

This builds kernels for

  • Raspberry Pi 1B/Zero (kernel.img)
  • Raspberry Pi 2B/3B (kernel7.img)
  • Raspberry Pi 4B (kernel7l.img)

To use, copy the contents of the "sdboot" directory to the boot FAT partition of an SD card.

Enjoy! -- Michael

crosstalk's People

Contributors

michaelengel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.