Short: Amiga specific Common Lisp Author: manfred.bergmann@me.com (Manfred Bergmann) Uploader: mb software-by-mabe com (Manfred Bergmann) Type: dev/lang Version: 0.9.0 Requires: 68020+, 1 MB RAM (more for big programs); FPU for bin/aos3-fpu Architecture: m68k-amigaos >= 3.0.0; ppc-morphos Distribution: Aminet URL: https://github.com/mdbergmann/cl-amiga 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