CL-Amiga 0.9.0 - Common Lisp for AmigaOS 3 and MorphOS
======================================================
A Common Lisp built for the Amiga: a compact bytecode VM in portable C
with an optional native m68k JIT, CLOS with the MOP, Gray streams,
threads, sockets with TLS (AmiSSL), an FFI with Lisp callbacks, and
bindings for Intuition, Graphics, GadTools, ReAction, MUI, BOOPSI,
audio.device, AHI, iffparse and DOS packets, plus generated 1:1 bindings
for every library of the NDK 3.2 and the MorphOS SDK. ASDF and
Quicklisp are included. Small programs run in 1 MB of RAM, and the
same compiled FASLs run unchanged on 68k and PowerPC.
Getting started
---------------
1. Unpack anywhere - no installer, no assigns:
lha x clamiga.lha Work:
2. Pick your binary:
bin/aos3/clamiga AmigaOS 3.x, any 68020+ (floats in software)
bin/aos3-fpu/clamiga AmigaOS 3.x with an FPU (68881/882, 040/060,
Vampire, PiStorm) - crashes without one
bin/mos/clamiga MorphOS (PowerPC, native)
3. Start it from a Shell with a 128K stack:
stack 131072
cd Work:clamiga-0.9.0
bin/aos3/clamiga
4. At the prompt:
(format t "Hello, Amiga!~%")
(require "amiga/intuition") ; the OS bindings load on demand
(load "examples/amiga/gfx/bouncing-lines.lisp")
(quit)
5. Going further:
bin/aos3/clamiga --heap 16M ; more heap for bigger programs
bin/aos3/clamiga --load examples/amiga/reaction/listbrowser.lisp
examples/ holds ready-to-run programs (ReAction and MUI GUIs,
graphics, audio, IFF, ARexx), docs/README.md is the package reference
(EXT, MP, FFI, GRAY, MOP and the AMIGA.* bindings), and
README-BINARY.txt has the details on the binaries, the heap image and
the libraries.
Changes in 0.9.0
----------------
CL-Amiga 0.9 - opt-in AHI playback: AMIGA.AHI over a generated ahi.device
table (device interface with gapless QUEUE-SAMPLE double buffering, the
hook-free low-level mixer API and the audio mode database; 80/80 on real
MorphOS), AMIGA.EXEC's exec device-I/O calls, and AMIGA.AUDIO now audible on
real AmigaOS 3 (Paula period/volume written directly, channels pinned at max
precedence); off-heap memory handed back at exit - 3,743,160 bytes of Fast
RAM lost per launch on AmigaOS becomes ~1,300, with CLAMIGA_MEM_DIAG=1 and
make test-memleak to keep it so; the binary release deploys from a bare-boot
heap image beside each binary (clamiga.img, FS-UAE 68040 boot 740 ms -> 40
ms; image-amiga / Makefile.mos image), and a restored session re-derives
*default-pathname-defaults* and *random-state*; scripts/aminet-upload.sh
stages, checks and uploads the Aminet package; FFI register arguments take
T/NIL, rejected values name argument, register and value, and
builtin/FFI-stub/library-call errors report their own source line;
DESTRUCTURING-BIND rejects unknown &key keywords (CLHS 3.4.4); no REPL
continuation prompt for a pasted form (#14); cl+ssl facade ENSURE-INITIALIZED
/ SSL-CHECK-VERIFY-P (websocket-driver + CLOG load with TLS);
examples/amiga/gfx/screenshot.lisp; AmigaOS binaries stripped and
frame-pointer-free (845/834 KB -> 797/787 KB); Amiga suite in FS-UAE:
soft-float 4453/4453 restored-image and 4452/4453 fresh-boot, FPU=1 4466/4466
restored-image and 4465/4466 fresh-boot (the one miss in each fresh-boot pass
is audio-short-sample-completes, an FS-UAE-only timing artifact that passes
on real hardware), test-extra 13075/0
License: Apache 2.0. Source code, documentation and issue tracker:
https://github.com/mdbergmann/cl-amiga
|