Skip to content

Releases: JanFromBelgium/JapiBase

Japi Base v2.4 — keyboard fixes

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 14 Jun 10:59

Keyboard polish for the platform — no change to the engine API.

  • Numeric keypad now works. With Num Lock on it types plain ASCII (digits 0-9, . + - * / and Enter) instead of special codes the editor and BASIC ignored, so the keypad does nothing no more. With Num Lock off it keeps its navigation role (arrows, Home/End, PgUp/PgDn, Ins/Del). Layout-independent.
  • French AZERTY fixed. The bundled AZERTY_FR.kbd is re-encoded to CP437, so the accented letters and the euro sign show the right glyphs (they used to render as Greek letters because the bytes were Latin-1). Dead keys ^ / ¨ are best-effort for now (no accent combining yet).
  • Tidy-up. Removed the last documentation references to the (already-removed) GPL-3 pico-lfs adapter; the project stays fully BSD-3-Clause.

Asset: japi_base.uf2 — flash to a Raspberry Pi Pico 2 (RP2350).

Japi Base v2.3 — now BSD-3-Clause

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 13 Jun 15:33

Japi Base is now permissively licensed — BSD-3-Clause instead of GPL-3.

The only GPL-3 code in the build was the pico-lfs flash adapter (littlefs itself is BSD-3-Clause). It has been replaced by Japi Base's own ~70-line littlefs block device, so the project carries no copyleft obligation anymore.

You are now free to build on Japi Base in any project — including closed-source — as long as you keep the copyright notice (in your source, and for binaries in your documentation or credits). A mention that it is "built on Japi Base" is appreciated but not required.

No functional change. The flash layout is unchanged, so an existing C: filesystem stays readable. Built-in config and state also moved into a tidy C:config/ folder on the built-in flash.

Asset: japi_base.uf2 — flash to a Raspberry Pi Pico 2 (RP2350).

Japi Base v2.2

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 12 Jun 13:40

Production release. Stable, non-fundamental improvements over v2.1.

New / fixed

  • SD card hot-insert — a card inserted after power-up is now picked up
    the next time you use drive A:, with no restart. Boot with no card and
    the machine simply starts on the built-in C: drive.
  • File paths — long paths to the SD card are no longer silently truncated.
  • Timestamps — files saved to the SD carry an obvious "no real-time clock"
    date (1980-01-01, the FAT epoch) instead of a believable-but-fake one.
  • Robustness — large FatFs objects are kept off the small Core 0 stack
    (file paths, the boot-time keyboard load, the screenshot), protecting the
    safety margin.

Flashing
Hold BOOTSEL while plugging in your Pico 2 and copy japi_base.uf2 onto the
RP2350 drive that appears.

Japi Base v2.1

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 12 Jun 11:22

Production release. Stable, architecture-preserving additions since v2.0.

New

  • Screenshot — press PrintScreen at any time to save a picture of the
    screen to the SD card as an 8-bit indexed BMP (screenshotNNNN.bmp). The
    number is a persistent, never-reused counter kept in the built-in flash (C:),
    so shots sort chronologically and survive reboots and card swaps, like an old
    film camera. Works everywhere — in the demo and in your own program, even
    while graphics are being drawn.
  • Keyboard — distinct key codes for Ctrl+Tab and Shift+Tab so
    applications can tell them apart from a plain Tab.
  • Graphics — bitmap double-buffering for tear-free animation and a larger
    bitmap window (up to 504×384).

Flashing
Hold BOOTSEL while plugging in your Pico 2 and copy japi_base.uf2 onto the
RP2350 drive that appears.

Japi Base v2.0 — production release

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 04 Jun 09:19

Japi Base 2.0 — the production baseline of the platform.

The I/O engine (VGA, PS/2 keyboard, micro-SD, audio and the switchable CPU
clock) is feature-complete and verified on real hardware. There are no known
defects.

Versioning: Japi Base now follows a Linux-style even/odd scheme. Even
major versions are production
(2.0, 2.2, 4.0 …); odd major versions are
development
(3.0, 3.1 …). The scheme covers the platform only — the editor
(JBE) and BASIC are separate products built on top of Japi Base, with their
own version numbers. See the README for details. (2.0 supersedes the brief
1.0 tag, which has been retired so the scheme is consistent from the start.)

What you get

  • VGA — 1024×768 @ 60 Hz, 127×64 text in 64 colours, plus a bitmap window.
  • PS/2 keyboard — pluggable AZERTY/QWERTY/QWERTZ layouts via config.sys.
  • Storage — 360 KB LittleFS flash floppy (A:) + optional micro-SD (C:).
  • Audio — PWM stereo with a 4-channel wavetable synth.
  • Switchable CPU clock — 260 / 324 / 390 MHz tiers with watchdog auto-revert.
  • Free for your code — Core 0 and the unused PIOs/peripherals are all yours.

Install

Hold BOOTSEL while plugging in your Pico 2, then copy japi_base.uf2
onto the RP2350 drive that appears.

What's next

A code editor (JBE) and a BASIC — separate products that build on this
platform — plus a full build/usage manual.

Japi Base v0.6 — documentation: switchable CPU clock

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 31 May 12:29

What's new

A documentation release -- the firmware is unchanged from v0.5. It brings the README up to date so the switchable CPU clock (260 / 324 / 390 MHz, voltage-tracked, with automatic watchdog fallback) is documented as a first-class platform feature, with a short japi_set_cpu_clock() code snippet and the CPU benchmark demo page described.

If you are already on v0.5 there is no need to re-flash: the attached japi_base_v0.6.uf2 is byte-for-byte the v0.5 firmware.

Install

Hold BOOTSEL while plugging in the Pico 2, then copy japi_base_v0.6.uf2 onto the RP2350 drive.

Full changelog: v0.5...v0.6

Japi Base v0.5 — switchable CPU clock (260 / 324 / 390 MHz)

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 31 May 12:15

What's new

A runtime-switchable CPU clock with an automatic safety net. Japi Base can now run at three CPU speeds, each with its own core voltage, while the 1024x768@60 picture stays exactly the same -- the VGA program switches cycles-per-pixel so the dot clock stays ~65 MHz on every tier:

  • 260 MHz @ 1.15 V -- the safe floor
  • 324 MHz @ 1.20 V -- the default
  • 390 MHz @ 1.30 V -- an opt-in up-size (lucky-silicon bonus; not every board can hold it)

The chosen speed is stored in flash and applied on a clean reboot. If a board cannot hold a speed the hardware watchdog catches it and steps down one tier on its own (390 to 324, 324 to 260) -- a board that cannot do the high gear is never bricked and never needs a re-flash.

Try it on the CPU Benchmark page: Shift+T up-sizes, t down-sizes. The benchmark times a fixed workload with a clock-independent timer so you can watch the throughput scale with the clock while the checksum stays identical, which proves the math is still correct at speed.

Install

Hold BOOTSEL while plugging in the Pico 2, then copy japi_base_v0.5.uf2 onto the RP2350 drive.

Full changelog: v0.4...v0.5

Japi Base v0.4 — PS/2 keyboard noise immunity

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 31 May 06:46

What's new

More robust PS/2 keyboard input on noisy setups. The PS/2 PIO state machine ran at full system clock (260 MHz), making it sensitive enough that nanosecond glitches on the clock line — common with long jumper wires, breadboards, or a USB-to-PS/2 bridge — were misread as falling edges and corrupted keystrokes. The SM clock is now divided down to ~160 kHz, which low-pass filters those glitches while still oversampling the 16.7 kHz max PS/2 clock about 10x. Clean setups are unaffected; noisy ones become reliable.

Diagnosed by a Raspberry Pi forum user running a USB-to-PS/2 bridge — thanks!

Install

Hold BOOTSEL while plugging in the Pico 2, then copy japi_base_v0.4.uf2 onto the RP2350 drive.

Full changelog: v0.3...v0.4

Japi Base v0.3 — directory listing API + double-buffered text

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 25 May 09:40

Two platform additions and a small demo fix that flow from them.

New

  • Directory listing API. japi_opendir / japi_readdir / japi_closedir, with a japi_dir_t opaque handle that walks both FatFs (SD) and littlefs entries. . and .. are skipped. Enables file-browsing applications on top of Japi Base.
  • Double-buffered text buffer. A hidden second copy of vga_text_buffer is published on vga_wait_vblank() via memcpy during the vertical blank. A render that doesn't finish within one frame no longer has its later writes overrun by the scanline reader — cursor blocks, status bars, overlays, anything written after a long fill all show up cleanly. Frees up the way for larger animations and smooth scrolling. ~24 KB extra RAM.

API contract

Writes via vga_set_char / vga_print / vga_clear are now visible to the scanline only after the next vga_wait_vblank(). Same model as SDL_RenderPresent / glSwapBuffers. The "Hello, Japi Base" example in the README is updated to show the convention.

Demo

Two wait-loops in the demo (wait_key(), and the showcase animation loop) now call vga_wait_vblank() so static pages and the showcase render correctly under the new convention. The bouncing-balls and Starry Night phases already synced on vblank for their bitmap updates and didn't need changes.

Flash

Download japi_base.uf2, hold BOOTSEL while plugging in your Pico 2, and copy it onto the RP2350 drive that appears.

Japi Base v0.2 — extended keyboard driver

Choose a tag to compare

@JanFromBelgium JanFromBelgium released this 19 May 15:56

Built from master a489b81 (hardware-verified).

New since v0.1 — extended keyboard driver (additive, no regressions):

  • Shift / Ctrl / Ctrl+Shift + navigation keys now emit distinct codes
    (editor selection & vertical block select).
  • Left-Alt + letter = menu accelerator codes (Turbo-Pascal style).
  • AltGr and the keyboard layout are unchanged.

Flash: hold BOOTSEL while plugging in the Pico 2, copy japi_base.uf2
onto the RP2350 drive. Demo unchanged (Showcase / Balls / Starry Night
/ API).