Category:Hopper

From Rosetta Code
Language
Hopper
This programming language may be used to instruct a computer to perform a task.
Official website
Garbage collected: Yes
Parameter passing methods: By reference, By value
Type safety: Safe
Type strength: Strong
Type expression: Explicit
Type checking: Static


Listed below are all of the tasks on Rosetta Code which have been solved using Hopper.

Hopper is a Java-like programming language and development environment designed for microcontrollers. A curly-brace semi-colon syntax, with a bytecode compiler, and development toolchain for Hopper bytecode virtual machine runtime implementations.

The runtimes are usually flashed onto the development board for power up start. The IDE can upload a boot up program, (along with a little file system). Development machine and device interactions is accomplished by USB serial connections. Hopper blurs the line between IDE programmer and target device. The serial monitor and client/server communications is written in Hopper, which can be executed in the IDE and/or the target device.

The Hopper Interactive Development Environment (IDE) runs on Windows, with outputs targeting Hopper Runtimes for

  • 6502, an older 8bit microcontroller unit, (MCU).
  • RP2040, a newer 32bit dual core Cortex M0+ MCU with General Purpose Input Output (GPIO) pins and modern internal peripherals, designed by the Raspberry Pi Foundation, (RPi).
    • Pico
    • Pico W
    • Challenger RP2040 Wifi
  • more to come

Github repository: https://github.com/sillycowvalley/Hopper

All Hopper Runtimes support a Hopper Monitor shell that implements feedback IO and a command language, the elements of which are Hopper programs. The Hopper Runtime virtual machine can also be used directly from the Hopper IDE on desktop PC, with the bootstrap Windows VM written in C# and the rest is self-hosted in Hopper. For the RP2040 at least.

The 6502 Runtime is bootstrapped from assembly language sources, for both first run hopper and firmware, then hosted in Hopper VM bytecode and the development toolchain.

Hopper is written in Hopper, with .hexe bytecode files in the Bin/ directory of the IDE setup.

  • Preprocess, Compile, Optimize, Codegen, DASM (Disassembler)
  • Translate (Hopper to C)

In support of the system shell and .cmd scripting, there is also: (non exhaustive list)

  • show, shell, debug (more on this below), cd, cls, dir, del
  • see help for more

Documentation

The author has put early documentation efforts into a large set of YouTube videos, with the main page (and search) at:

https://www.youtube.com/@biggertigger

Development as of 2024

In development by Michael Cartwright, with working samples for MOS Technology 6502 and Raspberry Pi RP2040. There are various RunTime UF2's pre-built for quick starts. (UF2 is a hex file format for microcontroller firmware uploads):

  • Pico, Pico W (with Wifi networking implemented), Challenger RP2040 Wifi
  • as is, the Pico firmware will at least minimally work on a fair number of RPi RP2040 development boards
  • along with drivers (written in Hopper) for many MCU related display devices and module peripherals.

Hopper Debugger

The debugger is an important part of Hopper development. TODO

Links:

Pages in category "Hopper"

This category contains only the following page.