Note python.toml is gitignored; copy from committed example.
Document that the Copperline config is local (gitignored via
.git/info/exclude) and created by copying ports/amiga/python.toml.example.
Signed-off-by: Simon Dick <simond@irrelevant.org>
Add amiga-copperline-runtests.sh wrapper; fix python.toml path.
Document the host-side directory-run wrapper (stage volume, gen .exp,
on-device runner under -X serialdebug, stop-on-summary) and correct the
config location to the repo-root python.toml.
Signed-off-by: Simon Dick <simond@irrelevant.org>
Document Copperline testing path and -X serialdebug capture.
Add a Copperline section to the testing guide: independent FPU-correct
emulator used as the oracle that pinned the Amiberry NaN bug, its current
FPU-instruction gap (Copperline#45), and serial->stdout capture via the
port's new -X serialdebug option (RawPutChar). Note the Amiberry 68881
NaN-mangling caveat alongside the FPU variant. Mirror the summary into the
design log's testing section.
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga docs: Add test-status scoreboard; slim the testing page.
New Amiga-port-test-status page is the at-a-glance scoreboard: all 31
port-local smoke tests grouped by area with vamos/Amiberry status, the
upstream-suite per-directory snapshot, and the remaining real-hardware
failures split into genuine gaps / environmental / won't-fix platform
differences, plus a recently-fixed table.
Testing page cleanup (1048 -> 945 lines):
- Consolidated the two conflicting suite snapshots into one "Suite
results" section pointing at the scoreboard for the breakdown; kept
the FPCR-rounding and sys.path[0] fix write-ups.
- Compressed the float/basics/extmod serial narratives to their
conclusions, with the forensic detail tucked into <details> blocks.
- Replaced the two duplicated known-failure tables with a pointer to the
scoreboard, so failure status has one home.
- Added a runbook-vs-scoreboard pointer at the top.
Repointed the design log's known-failures link and the now-orphaned
testing-page anchors at the scoreboard. Home.md lists the new page.
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga docs: Split the design log into per-phase wiki pages.
Amiga-port-design.md shrinks from 2772 to 564 lines, becoming a lean
index + architecture reference (overview, linked phase-status table,
CPU/ABI, toolchain, NLR, GC, port layout, investigation items, known
limitations, testing pointer). All per-phase log content moved out.
New pages: Phase 12 (native emitter rework), 17 (library access), 18
(ARexx), 37 (datatypes, planned), 39 (extmod opt-ins); plus two era
pages grouping the small foundational phases (0-11 Foundation, 13-27
Platform integration) to avoid stub pages.
The 10 existing Phase-NN-*-plan pages (28-36, 38) absorb their design-
log section as a "Design and rationale" block above the step plan, with
Files/Status deduplicated. Every phase page gets a consistent H1 and a
back-link to the design log; Home.md lists them all.
Killed stale docs/phaseNN-*.md in-tree link targets and fixed a wrong
Phase 17 link; verified zero dangling internal wiki links.
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga docs: viper long-shift fix (Phase 12c) — emitter complete.
The remaining viper failures were one bug, not the predicted register
allocator + missing pointer opcodes: asm68k.h emitted word-size shift
opcodes (LSL.W/LSR.W, and ASR encoded as ASL), so any viper shift past
bit 15 was wrong. Fixed to LSL.L/LSR.L/ASR.L, flipping 6 tests.
micropython/ is now 85 pass / 18 skip / 5 fail; the 5 remaining are
big-endian vs little-endian-.exp byte-order differences in the viper
ptr16/ptr32 boundary tests, moved to the platform-differences table. The
native + viper emitter is functionally complete. MAX_REGS_FOR_LOCAL_VARS=1
is a perf limit, not a correctness gap.
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga design log: Phase 12b done — native emitter complete.
The native_const/closure/gen crashes were a big-endian byte-order bug:
the emitter wrote prelude_ptr_index (and the generator start_offset)
little-endian via mp_asm_base_data(), but the 68k reads it back as a
native uintptr_t, so index 1 became 0x01000000 and child_table[] indexed
out of bounds. Fixed by byte-swapping on N_68K.
Mark Phase 12 done, rewrite 12b with the real root cause (the old A4 /
ASM_CALL_IND theory was wrong — native->native calls already worked),
and update the counts: micropython/ 79 pass / 18 skip / 11 fail, all 11
remaining are viper register/pointer gaps (zero native failures).
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga testing: Record full micropython/ vamos re-run for Phase 12a.
Replace the derived +3/-3 NLR estimate with the measured full-suite
result: micropython/ is 76 pass / 18 skip / 14 fail (was 70/18/20),
+6 pass / -6 fail with zero regressions. The register NLR also fixed
viper_try/viper_with/viper_globals (NLR-only, no viper register work
needed), so the viper bucket drops 14 -> 11 and native 6 -> 3.
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga design log: Phase 12a register NLR done; split out 12b.
try/except/with in @micropython.native now work via the register-based
68k NLR (nlr68k.S + nlr68k_jump.c). Mark Phase 12a done, break the
residual native-call/closure/generator crashes out as Phase 12b, and
update the NLR architecture description, limitations tables, and the
test-failure counts (native bucket 6 -> 3; micropython/ +3 pass).
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga testing: document serial reliability hardening; bulk runs now dependable
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga testing: add extmod-over-serial results; note stray .exp removed
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga testing: document basics-over-serial cascade/flakiness; suite is clean bar struct1
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga testing: add float-suite-over-serial results (FPCR fix)
Signed-off-by: Simon Dick <simond@irrelevant.org>
Amiga testing: time_res was a port FPCR bug, now fixed
Signed-off-by: Simon Dick <simond@irrelevant.org>
Testing: correct time_res mechanism (LIBS: math lib auto-selects soft/FPU at runtime)
Signed-off-by: Simon Dick <simond@irrelevant.org>
Testing: refine time_res note (all FPU modes truncate; only no-FPU full precision)
Signed-off-by: Simon Dick <simond@irrelevant.org>
Testing: time_res is an Amiberry FPU-emulation artifact, not a port bug
Signed-off-by: Simon Dick <simond@irrelevant.org>
Testing: import_file.py fixed (sys.path[0] relative for basename scripts)
Signed-off-by: Simon Dick <simond@irrelevant.org>
Testing: triage import_file.py failure (harness sibling limit + absolute __file__)
Signed-off-by: Simon Dick <simond@irrelevant.org>
Testing: serial run-tests.py -t works; 2026-06-20 re-run + Amiberry verification
Signed-off-by: Simon Dick <simond@irrelevant.org>
Enumerate the 35 pending-work test failures.
Adds a "Known failures pending port work (TODO)" subsection beside
the existing "not port bugs" table, grouping the current 35 failures
captured against commit 98a3a6e4c (standard variant, vamos) by cause
and pairing each group with the port work that would close it:
6 native_* Phase 12 NLR for try/except/with/closures
14 viper_* viper register allocator + 16/32-bit pointer ops
5 ssl_* AmiSSL API subset triage
3 socket_* vamos bsdsocket gaps (re-verify on Amiberry)
1 select vamos poll() gap
3 time_* vamos clock quantum
1 import vamos host-path rewrite for __file__
1 vfs userfs root-mount collision with VfsAmiga
1 platform sys.platform="amiga" not in test's expected list
Existing 4 "real platform difference" rows (struct1, float_parse*,
float_format_accuracy) are unchanged and now sit under their own
sub-heading to keep that distinction clear.
Signed-off-by: Simon Dick <simond@irrelevant.org>
Refresh suite snapshot for 2026-06-02 (MOVEQ fix + Phase 39).
Smoke test sweep: document new tests + asm68k MOVEQ fix.
Import Amiga port design log and per-phase plans from in-tree docs/.