Skip to content

Releases: creep-ltx/AmigaTools

CCON 1.2.7 — the configuration release

Choose a tag to compare

@creep-ltx creep-ltx released this 11 Aug 19:45

CCON: gains a defaults file, so the options you always want no longer have to be retyped on every open string. It is entirely optional — a missing file is not an error and nothing changes without one — and it introduced no second parser and no second vocabulary, because every key in it is an ordinary open-string option.

What changed

  • A defaults file, L:ccon.cfg — colours, scrollback depth, font, where the window opens, its title, even the AppIcon it shows while iconified. One rule decides who wins: built-in default < L:ccon.cfg < the open string, so the file sets what you usually want and any single window can still say otherwise. Comments with ; or #, KEY=value a line, and a key CCON: doesn't recognise is ignored — which is what lets an older handler read a newer file. Read once per window as it opens, so edits take effect on the next window with no reboot.
  • Named [sections] — a profile a window asks for by name (newshell CCON:CONFIGtall), stating only what it changes, or DEFAULTS to ignore the file altogether for a script that can't know what's in somebody else's config. Anything written before the first [name] belongs to [DEFAULT], so a flat file with no sections is perfectly valid.
  • New keys — the window's edges (LEFT/TOP/RIGHT/BOTTOM, where the number is the edge and -1 fills the screen), TEXT as a clearer name for PEN, TITLE= and ICON=, and DIRS/HIDDEN/GHOST to pin the menu colours by hand. Every switch can now also be spoken the other way round (BORDER, DRAG, ACTIVE, NOWAIT, …), because a setting made for every window in the file has to be takeable back by one window's open string.
  • Tab completes device namesdu<Tab> reaches DUMP:. Devices, volumes and assigns all appear, complete with their colon and no trailing space so you can type straight on into the path, and they're offered alongside what the current directory holds rather than instead of it.
  • The completion menu walks — Left and Right by one entry, Up and Down by a row, wrapping within the column. Esc now aborts: the word goes back to what it was when the menu opened, so trying candidates costs nothing. Ctrl and Shift arrows keep their usual scrollback meanings.
  • Menu colours come from your screen — fixed pen numbers read wrong on a CyberGraphX screen, wrong again on a dark terminal palette, and wrong a third time on the boot shell, where the nearest pen to the midpoint between background and text is the directory blue, so hidden entries and directories rendered identically. Directories now follow the screen's own fill-pen role and the hidden class is chosen by scanning the palette for a pen that stays readable against the background while still reading as dimmer than the text.
  • Fixed: resizing a window with the completion menu open no longer leaves the frame damaged behind it.

Built as beta ladder 1.2.7b4–b16, every one boot-verified before the next, with a seventh source audit over the campaign before release. Full details in the changelog.

Download: ltx-cc127.lha (attached) — extract on the Amiga, copy L/ccon-handler and Devs/CCON-mountlist over SYS:, then Mount CCON: FROM DEVS:CCON-mountlist and NewShell CCON:. For the defaults file, copy L/ccon.cfg-example L:ccon.cfg — note the rename: under its shipped name the handler ignores it, so unpacking an upgrade over an existing install can never overwrite a config you have already written. Full installation and handbook in CCon.doc inside the archive.

CCON 1.2.6 — the wishlist release

Choose a tag to compare

@creep-ltx creep-ltx released this 11 Aug 10:48

The wishlist release. All three features a reader of amiga-news.de asked for after 1.2.5, plus the deepest hardening pass the handler has had: a fifth source audit before the features shipped and — a first for this project — a sixth audit of the fixes themselves before the release.

What changed

  • A real iconify gadget — the title bar now carries the native V47.4+ iconify gadget, next to the depth gadget, on every owned CCON window. Click it and the window parks to the CCON AppIcon on the Workbench, exactly as RightAmiga+I always did; double-click the icon and the session returns with transcript, history and pending output intact. Works over a fullscreen program (Ed) too. On earlier OS versions the gadget simply does not appear and RightAmiga+I still works.
  • The cursor dresses like the ROM's — the block cursor and the line-editor blip are drawn in complement mode, the exact mechanism console.device and KingCON use, instead of inverse-video white. The cursor now takes its colour from whatever sits under it, at any screen depth. An inactive window shows the stock checkerboard ghost cursor, kept live even while iconified or borrowed, so a parked Ed session ghosts its cursor like any shell.
  • Drag and drop — drop any Workbench icon on a CCON window and its full path lands at the cursor as if typed: Volume:dir/file for a file, a trailing / for a drawer, Volume: for a disk, quoted whenever the shell would mangle it bare, one trailing blank each so several icons line up as arguments. Cooked mode inserts into the edit line under paste rules; a raw fullscreen client receives it as typed input. A drop that cannot fit is refused whole with a beep — never a silently truncated argument list.
  • The fifth audit, all findings closed — the new iconify gadget deferred its window-close past the event drain it used to run inside, the one latent crash the features had shipped and the release blocker until it fell; a malformed Info() packet with a NIL buffer can no longer zero low memory; a drop during a Ctrl+R scrollback search no longer vanishes; a failed parent-directory hop during drop resolution now inserts nothing instead of a wrong shorter path; resizing away a standing selection no longer paints outside the new window.
  • The sixth audit — the fixes audited before release — two independent review passes over the fix campaign itself verified every fix landed as prescribed, and surfaced one pre-existing accounting gap in the fullscreen-snapshot machinery. Closed, plus the campaign's own comment rot repaired the day it was written.

Built as beta ladder 1.2.6b1–b9, every one boot-verified before the next. Full details in the changelog.

Download: ltx-cc126.lha (attached) — extract on the Amiga, copy L/ccon-handler and Devs/CCON-mountlist over SYS:, then Mount CCON: FROM DEVS:CCON-mountlist and NewShell CCON:. Full installation and handbook in CCon.doc inside the archive.

ls 0.3.4

Choose a tag to compare

@creep-ltx creep-ltx released this 28 Jul 15:30

The real-hardware release: ls -R works on PFS3 (and any filesystem whose disk keys are not unique).

  • -R no longer calls the whole disk one big cycle on PFS3-class filesystems. The 0.3.3 cycle guard trusted fib_DiskKey as a directory's identity — true on FFS, where keys are block numbers, but PFS3 fills the field with the same internal value for every directory, so every child "matched" the root and ls -R dh0: skipped everything below it. A suspected cycle is now confirmed with SameLock() before anything is skipped, and one disproven match stands the guard down for that volume — FFS keeps the full guard, and real hard-link cycles are still caught everywhere. Found and verified on a real A1200.

Contents: the binary (ls), the manual (ls.doc), the source (ls.e).

Needs Kickstart 2.04+.

Download ls-0.3.4.lha below — the auto-generated Source code links are snapshots of the whole AmigaTools repo, not just ls.

rm 0.1

Choose a tag to compare

@creep-ltx creep-ltx released this 27 Jul 19:34

The missing family member — a Unix-style delete for AmigaDOS. C:Delete exists; rm is the muscle memory, with the family manners: bundled -rfv flags, its own AmigaDOS pattern matching, one bad item never kills the batch, a "not deleted:" summary at the end, and rm ? for usage.

Careful by default, in this family's way:

  • Directories need -r, like Unix (and unlike Delete ALL's promptless enthusiasm). The tree is walked with an explicit work list, every directory scanned to completion before anything inside it is deleted, and directories removed deepest-first once their contents are gone. A child that refuses to go leaves its whole parent chain standing, each reported honestly.
  • -f means force, the Amiga way: a delete-protected file (the d bit) is skipped and listed by default; with -f the protection is stripped and the delete retried. A file another task holds open always refuses — -f cannot unlock it. -f also silences "no match".
  • Volume roots are refused unconditionally. rm -rf dh0: answers "refusing to remove a volume root", full stop — no flag overrides it.
  • Links are deleted as links, never followed — soft links and hard directory links both: the entry goes, the target stays, and a linked ancestor can never turn -r into a cycle.
  • -v lists each object as it goes; Ctrl-C is honoured between entries. Return code: 0 clean, 5 skipped (listed), 10 failed, 20 break.

Boot-verified on AmigaOS 3.2: the d-bit pair with and without -f, a protected leaf keeping its parents alive, in-use refusal, root refusal, and deep trees deleting in exact post-order.

Needs Kickstart 2.04+.

Download rm-0.1.lha below - the auto-generated Source code links are snapshots of the whole AmigaTools repo, not just rm.

mv 0.5

Choose a tag to compare

@creep-ltx creep-ltx released this 27 Jul 19:33

Directories now move across volumes — the last gap between mv and what AmigaDOS Rename() can't do. The tree is copied over (every file with its protection bits, datestamp and filenote), then the source is deleted deepest-directory-first, strictly after the entire tree copied clean.

All-or-nothing per tree: any copy failure abandons the move, wipes the partial destination, and leaves the source untouched — verified by fault injection, with the source byte-for-byte identical afterwards. The destination must not already exist (merging is cp's business), volume roots are refused as sources, and a tree containing a soft link or a hard directory link is refused whole: a link can't be recreated faithfully on another volume, and copying through one could loop.

Also in this line: 0.4.1 fixed the cross-volume fallback silently dropping the filenote (a same-volume mv kept it; now both do — boot-verified), and 33+ arguments are now a hard error instead of silently dropping TO and promoting the 32nd source to destination.

Needs Kickstart 2.04+.

Download mv-0.5.lha below - the auto-generated Source code links are snapshots of the whole AmigaTools repo, not just mv.

mkdir 0.1.1

Choose a tag to compare

@creep-ltx creep-ltx released this 27 Jul 19:34

mkdir's first release on this page — a Unix-style make-directory for AmigaDOS: bundled flags, several directories at once, and -p to build a whole chain of missing parents in place (mkdir -p work:a/b/c), where an already-existing directory is not an error. Device/volume names are never created, only descended into. mkdir ? prints usage.

0.1.1 (the family audit): a file standing in the middle of a -p path is now reported at the component actually in the way — "exists and is not a directory" naming the blocker — instead of "succeeding" there and letting the next step fail with a generic fault naming the wrong component. And 33+ arguments are a hard error, never a silently shorter batch.

Needs Kickstart 2.04+.

Download mkdir-0.1.1.lha below - the auto-generated Source code links are snapshots of the whole AmigaTools repo, not just mkdir.

ls 0.3.3

Choose a tag to compare

@creep-ltx creep-ltx released this 27 Jul 19:32

The family-audit release (the whole story: tools-audit.md in the repo). Three fixes and a guard, behaviour otherwise byte-identical — an A/B over a full system drive produced the same 2920 lines as 0.3.2.

  • Ctrl+C during a pattern listing could corrupt the heap: the match anchor was freed once on the normal path and again by the break handler — the same double-free class as the 0.3.1 -R freeze, reachable from the keyboard. Fixed.
  • -R can no longer loop: soft-links are listed but never descended (Unix ls -R manners — and MakeLink SOFT is the famously half-broken corner), and a visited-directory set skips hard-link cycles with "directory cycle, skipped". Boot-verified against a real link loop on FFS.
  • The row buffer now sizes itself from the real console width, so a very wide RTG shell can't clip a colour-off code mid-row and bleed grey down the listing.
  • More than 32 path arguments is now a hard error instead of a silent truncation.

Needs Kickstart 2.04+.

Download ls-0.3.3.lha below - the auto-generated Source code links are snapshots of the whole AmigaTools repo, not just ls.

cp 0.1.2

Choose a tag to compare

@creep-ltx creep-ltx released this 27 Jul 19:33

The family-audit release (the whole story: tools-audit.md in the repo).

  • cp -r into its own subtree is refusedcp -r dir dir/sub used to re-copy its own output until the disk filled (the docs said "don't"; now the tool says it). Identity is checked by canonical path, assigns resolved, so an aliased route into the source is caught too.
  • More than 32 arguments is a hard error instead of a silent truncation. This one mattered: with 33+ arguments the dropped token was TO itself, and the 32nd source quietly became the destination — a long generated batch could land its files inside another source directory.
  • The -f shape is now documented plainly: it replaces by delete-then-copy, the Unix way, so if the copy itself then fails the old target is already gone. Keep that in mind before -f'ing the only copy of something.

Needs Kickstart 2.04+.

Download cp-0.1.2.lha below - the auto-generated Source code links are snapshots of the whole AmigaTools repo, not just cp.

CCON 1.2.5 — the Ed-and-deep-screens release

Choose a tag to compare

@creep-ltx creep-ltx released this 24 Jul 21:11

The Ed release, and the deep-screen release. A fourth full read of the source opened it; an evening of testing against Ed on a real A1200 closed it. Every fix was root-caused by reading the actual bytes — Ed's own binary gave up its console protocol requests and its exact exit sequence, and a telemetry build logged the handler's packet stream to settle what staring could not.

What changed

  • Ghost text and menu colours on deep screens — fish-style autosuggestions and the completion menu's grey and blue now appear on 32+ colour and RTG screens; they used to vanish silently above 16 colours. (ls colours on such screens still fall back to the default pen — that one is a scrollback-model constraint, and lifting it is 1.3-scale work.)
  • Shift+Backspace and Shift+Del delete to line start and line end — the Amiga-native spellings of Ctrl+U and Ctrl+K, which still work.
  • Ed and the close gadget make peace — the click used to send end-of-file into Ed's raw session and leave it dead on screen. The gadget now speaks the full V47 protocol: Ed (which requests close-gadget reports, alongside its menus and resizes) receives the report and runs its own quit flow; a shell still ends on the click; a raw program that never asked gets what stock gives it — nothing.
  • No more empty line after quitting Ed — Ed ends every session with a tidy newline meant for consoles that cannot restore the screen behind it. CCON restores the transcript exactly, so that newline only pushed the prompt down a row; it is dropped now, exactly once, only there. Stock V47 still shows the blank line.
  • Resizing during an Ed session is safe — it used to re-wrap Ed's on-screen page as shell output and file pieces of it into your scrollback. Now the real transcript is put back before anything re-wraps, the window border stays drawn, and quitting Ed after a mid-session resize restores your transcript re-wrapped to the new width, where it used to be lost entirely.
  • Hardening from the fourth audit — a malformed negative-length write could crash the machine (a 1.2.2 regression, never seen in the wild); a blank-page scroll could be skipped wrongly at three line-editor corners; first-mount renders ran on uninitialized dirty-row marks.

Built as beta ladder 1.2.5b1–b8, every step boot-verified before the next, the final build confirmed on a real A1200 (PiStorm). Full details in the changelog.

Download: ltx-cc125.lha (attached) — extract on the Amiga, copy L/ccon-handler and Devs/CCON-mountlist over SYS:, then Mount CCON: FROM DEVS:CCON-mountlist and NewShell CCON:. Full installation and handbook in CCon.doc inside the archive.

ls 0.3.1

Choose a tag to compare

@creep-ltx creep-ltx released this 23 Jul 23:32

The -R freeze, root-caused and fixed. This page last saw 0.1, so it also carries 0.2's IoErr()-before-report fix and 0.3's empty-name recursion guard — and now the real story underneath all of them.

  • The bug: ls freed its entry records with the wrong deallocator (Dispose() on NEW'd objects). In the E-VO runtime, small NEW objects are carved from shared 5000-byte allocator chunks — and Dispose() on the first entry carved from a chunk frees the whole chunk while the rest are still live. Big listings corrupted their own heap: intermittently blank names, and with -R a self-recursion that could hard-freeze the machine.
  • The fix: NEW pairs with END — one rule, three call sites. Verified against the E-VO runtime source, the compiled binary, and A/B runs over a full system drive: 0.3 crashes, 0.3.1 walks all 138 directories with every name intact and the entry set matching the host filesystem exactly.
  • The 0.3 empty-name guard stays in as defense in depth.
  • Binary sizes: E 11452 bytes; the asm twin still tracks 0.2 (its own allocator — it never had this bug).

Download ls-0.3.1.lha below - the auto-generated Source code links are snapshots of the whole AmigaTools repo, not just ls.