MicroPython for AmigaOS (m68k)
==============================
A port of MicroPython v1.27 (compatible Python 3.4) to AmigaOS,
targeting Motorola 68020+ processors. Runs on classic Amiga hardware
(A1200, A3000, A4000) and emulators (WinUAE, FS-UAE).
This port was developed by Fabrice with coding assistance from Claude
(Anthropic's AI), under Fabrice's direct supervision: architecture
decisions, implementation strategy, testing on real hardware/emulator,
and bug reports are all driven by Fabrice. Every change is reviewed
and validated before being committed.
Requirements
------------
- AmigaOS 3.0 or higher
- Motorola 68020 CPU or higher
- 2 MB RAM minimum for simple scripts
- 4 MB RAM recommended for networking and TLS
- AmiSSL (optional, required for HTTPS/TLS support)
Usage
-----
micropython ; interactive REPL
micropython script.py ; run a Python script
micropython script.mpy ; run precompiled bytecode
micropython -c "print(2**32)" ; run inline code
micropython -m 512 script.py ; run with 512 KB heap
The default heap size is 128 KB. Use -m to allocate more memory
(in KB). For example, downloading a web page may require 4 MB
of heap: micropython -m 4096 script.py
Press Ctrl-C at any time to interrupt a running script or a
time.sleep() call.
Features
--------
- Full Python 3.4 compatibility (ROM_LEVEL_EVERYTHING):
f-strings, set operations, OrderedDict, advanced slicing,
descriptors, async/await, and more
- Interactive REPL with readline support (cursor keys, history)
- Script execution and inline code (-c option)
- Configurable heap size (-m option)
- Precompiled bytecode: import and execute .mpy files compiled
with mpy-cross, either via import or directly from the command
line (micropython script.mpy)
- Ctrl-C (KeyboardInterrupt) support during script execution,
loops, and time.sleep()
Modules included:
re, json, math, struct, binascii, base64, time, datetime,
random, hashlib (sha256), errno, platform, socket, ssl,
urequests, deflate, gzip, arexx, gc, sys, io
File system support:
Full open/read/write/close via VFS_POSIX. os.listdir,
os.getcwd, os.chdir, os.mkdir, os.rmdir, os.remove,
os.rename, os.stat, os.chmod, os.getprotect, os.makedirs,
os.walk, os.path with AmigaOS volume:path conventions.
Networking:
TCP/UDP sockets, DNS resolution via bsdsocket.library.
HTTP client (urequests) with HTTP/1.1, chunked transfer
encoding, gzip decompression.
TLS/SSL (requires AmiSSL):
HTTPS support via AmiSSL. The amissl.library must be
installed on the Amiga. 4 MB RAM minimum is recommended
when using TLS.
ARexx IPC:
Inter-process communication with AmigaOS applications via
ARexx message ports. arexx.send() for one-shot commands,
arexx.exists() to check port availability, arexx.ports()
to list active ports, and arexx.Port() persistent client
with context manager for efficient multi-command sessions.
Platform detection:
platform.amiga_info() shows CPU, FPU, chipset, Kickstart
version, and available memory.
AmigaOS Path Conventions
------------------------
AmigaOS uses ":" to separate volumes from paths and "/" for
subdirectories:
>>> import os
>>> os.getcwd()
'DH0:Work'
>>> os.path.join("DH0:", "work", "scripts")
'DH0:work/scripts'
>>> os.path.isabs("DH0:file.py")
True
Changes since build 169
-----------------------
- ARexx IPC module: send commands to and communicate with any
ARexx-aware application (IBrowse, Directory Opus, etc.)
- os.chmod(): set AmigaOS file protection flags
- os.getprotect(): read AmigaOS file protection flags
- Ctrl-C support: KeyboardInterrupt now works during script
execution, loops, and time.sleep() calls
- Direct .mpy execution: run precompiled bytecode files from
the command line (micropython script.mpy)
- Import .mpy files: precompiled bytecode modules can be
imported alongside regular .py modules
Known Limitations
-----------------
- time.ticks_ms() returns 0 (no high-res timer yet)
- hashlib only supports SHA256
- Sockets are always blocking
- No multithreading
Source Code
-----------
The full source code is available on GitHub:
https://github.com/OoZe1911/micropython-amiga-port
License
-------
MicroPython is licensed under the MIT License.
|