🪟
Windows 64-bit
Native Win64 executable. No installer, no registry entries — just a single .exe you can run from anywhere.
Plan9Basic.exe Win64
⬇ Download .exe
🐧
Linux 64-bit
Single self-contained binary for 64-bit Linux. One chmod and you're running. No libraries to install.
Plan9Basic Linux64
⬇ Download binary
🤖
Android
Full Android APK with a built-in script editor and interpreter. Write and run BASIC scripts right on your phone or tablet.
Plan9Basic.apk Android 64-bit
⬇ Download .apk

🪟 Windows 64-bit

🪟

Windows 64-bit

Windows 10 / 11 — x86-64 architecture

FilePlan9Basic.exe
Architecturex86-64 (64-bit)
RequiresWindows 10 or later
DependenciesNone — fully self-contained
InstallNo installer needed — just run the .exe

Getting started on Windows

1

Download the executable

Click the Download .exe button above. Save Plan9Basic.exe to any folder — your Desktop, C:\Tools\, or anywhere convenient.

2

Write your first script

Open the application by clicking at the Editor button to open the code editor and type the code below:

╯ hello.bas
PRINTLN "Hello from Plan9Basic!"
LET name$ = "World"
PRINTLN "Hello, " + name$ + "!"
3

Run it from the application

Click the Run option to execute the applet:

Windows SmartScreen: On first launch Windows may show a SmartScreen warning. Click "More info" → "Run anyway" to proceed — the binary is safe.

Passing arguments to scripts

Arguments after the script path are available via paramcount and paramstr$(n):

╯ cmd.exe
C:\Tools> Plan9Basic.exe Alice 42
╯ myapp.bas
PRINTLN "Args: "; paramcount()       ' Args: 2
PRINTLN paramstr$(1)                 ' Alice
PRINTLN paramstr$(2)                 ' 42

🐧 Linux 64-bit

🐧

Linux 64-bit

Ubuntu, Debian, Fedora, Arch — any modern x86-64 distribution

FilePlan9Basic (no extension)
Architecturex86-64 (64-bit)
RequiresLinux kernel 4.x+ — any modern distro
DependenciesNone — statically linked
InstallDownload, chmod +x, run

Getting started on Linux

1

Download and make executable

Download the binary from above, then grant it execute permission. The binary has no extension — this is normal on Linux.

╯ bash
# Download (or copy from your downloads folder)
$ mv ~/Downloads/Plan9Basic ~/bin/Plan9Basic

# Make it executable
$ chmod +x ~/bin/Plan9Basic

# Run
$ ~/bin/Plan9Basic
2

(Optional) Install system-wide

Move the binary to /usr/local/bin so it's on your $PATH globally:

╯ bash
$ sudo mv Plan9Basic /usr/local/bin/plan9basic
$ sudo chmod +x /usr/local/bin/plan9basic
# Now usable from anywhere:
$ plan9basic

🤖 Android

🤖

Android

64-bit ARM — Android 9.0 (Pie) or later

FilePlan9Basic.apk
ArchitectureARM64 (64-bit)
RequiresAndroid 9.0 (API 28) or later
DistributionDirect APK — not on Google Play (sideload required)
IncludesBuilt-in code editor, file browser, and interpreter

Installing on Android (sideloading)

Because Plan9Basic can be downloaded as a direct APK (not via the Play Store), you need to allow installation from unknown sources. This is a one-time setting.

1

Enable Unknown Sources

Go to Settings → Apps → Special app access → Install unknown apps. Select your browser or file manager, then enable "Allow from this source".

The exact path varies by manufacturer — Samsung users: Settings → Biometrics & Security → Install unknown apps.

2

Download the APK

Tap the Download .apk button above directly on your Android device, or transfer Plan9Basic.apk from your computer via USB or cloud storage.

3

Install the APK

Open your Downloads folder (or Files app), tap Plan9Basic.apk, and follow the on-screen installation prompts. Tap Install when asked.

4

Open and write your first script

Launch Plan9Basic from your app drawer. The built-in editor opens immediately. Tap New, enter your code, and tap Run.

╯ first_script.bas (type in the built-in editor)
' Detect the platform and greet
LET platform$ = os_name$()
LET arch$ = os_architecture$()
PRINTLN "Running on " + platform$ + " (" + arch$ + ")"
PRINTLN "Plan9Basic is ready!"
Security note: Installing APKs from outside the Play Store bypasses Google’s app review. Only install software from sources you trust. Remember to disable Install unknown apps after installation if you prefer.

⚙ Translations.ini

On the first launch, Plan9Basic automatically downloads Translations.ini from the project server in the background. An internet connection is required the very first time you run the application, after that, the file is cached locally alongside the executable and no further downloads are needed.

Translations.ini controls all the text strings displayed by the runtime environment: error messages, UI labels, command prompts, and system notifications. It uses a standard INI key=value format and is placed in the same folder as the Plan9Basic executable (or inside the app data directory on Android).

╯ Folder layout (Windows example)
C:\Tools\Plan9Basic\
├── Plan9Basic.exe
├── Translations.ini
└── scripts\
    ├── hello.bas
    └── myapp.bas
ⓘ You can customise Translations.ini to localise runtime messages for your own language. The file uses standard INI key=value format.
Translations.ini will be improved in future versions of the software to allow the use of other languages ​​during the environment's execution.

❓ Frequently Asked Questions

Is Plan9Basic free?
Yes. Plan9Basic is free to download and use. The interpreter, all libraries, and the example scripts are included at no cost.
Do I need to install anything else (runtimes, DLLs)?
No. Each binary is self-contained. The Windows .exe and Linux binary require no external runtimes, libraries, or frameworks. The Android .apk is similarly self-contained.
Are 32-bit builds available?
Currently only 64-bit builds are distributed.
My antivirus flagged the .exe. Is it safe?
This is a false positive — a common occurrence with freshly built, unsigned executables. The binary is built directly from the Delphi source in this repository. You can inspect the source code to verify. If your organisation requires signed binaries, compile from source and sign with your own certificate.
What is the Translations.ini file for?
Translations.ini localises the error messages, prompts, and UI strings shown by the runtime environment. Without it the interpreter falls back to built-in English text.