CCON: - a console handler with output scrollback for AmigaOS.
=================================================================
WHAT IT IS
A mounted console handler - what CON:, KingCON and ViNCEd are -
built around the one feature the stock 3.2 console cannot be
given from outside: output scrollback. 512 lines of history
behind every window by default (up to 5000), and a line editor
that brings the modern shell feel to the Amiga prompt.
FEATURES
- Output scrollback: Shift/Ctrl+arrows and the mouse wheel,
working in raw mode too for a client that isn't fullscreen
(More/Ed refuse it on their own alternate screen, xterm
manners); Ctrl+R searches it once you're scrolled back (same
key as history search, retargeted) - matches shown inverted
AND land on your prompt live, same as history search already
does; Return/Tab/typing hand the live prompt straight back
with the found line ready to edit or run, n/N re-walk the
same matches if you scroll back again later
- Fast: on a real A1200 with a PiStorm accelerator, five times
faster overall than stock CON: with render barriers on (the
honest measure), and faster on nearly every test. Output
renders model-first (at most one scroll blit per write, none
for a screenful or a blank scroll), writes are answered ahead
of the pixels (a frame at most, the stock console's own
bargain), rendering is plane-masked - plain text moves one
bitplane in four, the 3.2 console.device's own trick - and the
full-screen editing sequences batch like ordinary output, so
Ed scrolls like butter (conbench, also in this collection)
- A window per open, stock CON: fashion; the full stock option
set (AUTO, WAIT, SCREEN, WINDOW0xADDR, NOBORDER, ...) per window
- Hosts real AmigaShells: NewShell CCON:
- Iconify to the Workbench: RightAmiga+I sends a window to a
desktop icon and a click brings it back exactly as you left
it - scrollback, a half-typed line and all; its own icon is
built into the handler. Works over a fullscreen client (Ed) too
- fish-style autosuggestions: history's continuation as grey
ghost text; Right accepts, Ctrl+Right/Tab take it word by word;
the ghost (and the menu's blue/grey) shows on any screen depth,
32+ colours and RTG included
- zsh-style Tab completion with a cycling candidate menu
- bash-style Ctrl+R incremental history search - the prompt
becomes an inverse (search: ...) banner and is restored
pixel-perfect from the scrollback model afterwards
- readline line surgery: Ctrl+W/U/K - with Shift+Backspace and
Shift+Del as the Amiga spellings of kill-to-start and
kill-to-end - and Ctrl+L clearing into HISTORY (Shift+Up
undoes the clear)
- Copy & paste with the stock console family, both directions
(IFF FTXT); drag, double-click word, triple-click line;
output freezes under a drag like stock; RAMIGA-V pastes
safely - one ordinary-looking line at a time, a grey hint
shows how many more are queued, Enter runs one and loads the
next, Esc cancels the rest (RAMIGA+SHIFT+V or PASTEEXEC for
the old instant-run way)
- SGR colour with the ANSI/Workbench pen separation: ls is
genuinely blue everywhere, Ed is never red - plus real
italic/underline/inverse soft styles
- FONT and LINES per window: pick your own font/size (loaded
from disk if needed) or scrollback depth; unset FONT follows
your Font Prefs default font instead of a hardcoded topaz 8
- Fullscreen programs work: Ed with working MENUS, block
cursor, resize re-measure, and proper whole-view scrolling
(ANSI Scroll Up/Down honoured, not just the one changed line);
its close gadget quits it properly (reported the V47 way, Ed
runs its own quit flow); quitting leaves no stray blank line,
the prompt lands directly under your command; and resizing
mid-session is safe - the page never leaks into scrollback,
and the transcript survives to the exit, re-wrapped. More with
real timed paging, and it restores your scrollback transcript
on exit exactly as xterm's alternate screen does - paged
content never enters your history
- xterm-style window titles (OSC) that survive scrollback
- CRAW: - the same handler as a raw-from-byte-one device
- Swedish (and other) dead-key composition survives raw mode
- can replace CON:/RAW: system-wide, KingCON style (Assign
DISMOUNT + Mount FROM the same mountlist) - experimental,
see ccon.doc section 15
LIMITATIONS
- ~120K of model per window at 80 columns and the default 512
lines (LINES=n scales it, up to 5000)
- Borrowed windows (WINDOW0xADDR) keep their owner's font
- CSI K erases to black under colour
- Completion: no quoted words, one menu page of 80
- Pasting into a fullscreen program (Ed) stops at ~2000 bytes
and beeps; cooked-mode paste has no limit
- 255 columns maximum; a window is at most that wide
- SMART/SIMPLE and ALT not implemented
- ls-style ANSI colours fall back to the default pen on 32+
colour / RTG screens (the model stores 16 pens per cell; the
ghost and menu colours are exempt and do show there)
- Tab completion and the history file have no filesystem
timeout; a wedged or spinning-up disk blocks the window
HISTORY
1.2.5
- Ghost text and completion-menu colours now show on 32+
colour and RTG screens (they vanished above 16 colours)
- Shift+Backspace / Shift+Del delete to line start / end -
the Amiga spellings of Ctrl+U / Ctrl+K
- Ed and the close gadget make peace: the click is reported
to Ed the V47 way and Ed quits properly, instead of the
session being cut off with a dead screen. Shells still end
on the click; raw programs that never asked get nothing,
as on stock
- Quitting Ed no longer leaves an empty line before the next
prompt (Ed's tidy newline is redundant once the transcript
is restored - dropped, exactly once, only there)
- Resizing during an Ed session no longer leaks the edited
file into scrollback history, keeps the window border
drawn, and the transcript now survives to the exit -
re-wrapped to the new width - where it used to be lost
- Hardening from a fourth source audit: a malformed
negative-length write could crash the machine (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-marks (cosmetic)
1.2.4
- The tuning release: on a real accelerated A1200 the whole
benchmark suite runs five times faster than stock CON: and
faster on nearly every test. Blank screens are never
scrolled (moving no pixels needs no blit - stock's own
trick, and the change that flipped the real-hardware
result), the full-screen editing sequences batch instead of
redrawing one at a time, and output is drawn the instant a
program waits for a key. Command output is there before you
see it draw; Ed scrolls like butter. All in Amiga E, no
assembler, still one source file
1.2.3
- Plane-masked rendering: text draws and scrolls only the
bitplanes its colours occupy (the 3.2 console.device trick),
widening instantly for colour, narrowing at page and window
boundaries. With render barriers on, the fastest console of
the three measured at both accelerated and stock timing -
and the one whose fast numbers ARE its honest numbers
1.2.2
- The speed release: rendering is model-first (at most one
scroll blit per write, none for a screenful), erasing the
prompt cursor costs one cell instead of a row repaint, and
writes are answered as soon as their bytes are copied so
bursts of output pool into batched blits. The benchmark
suite that took 1.2.1 288 seconds takes 2.4; with render
barriers on, 4x faster than stock CON:, 6x than ViNCEd
- conbench, written to measure all this, is its own tool in
the collection now
1.2.1
- An iconified window comes back at the size and place it
had, not the one it first opened with - and no longer
scrambles its own scrollback doing it
- A tall window with a small LINES no longer writes past its
scrollback buffer; the depth is raised to fit the window
- Faster output rendering
- Bug fixes: clipboard parsing bounded against malformed
data, a failed window restore can't strand a console,
pasting into Ed says so when it hits its size limit,
output during a scrollback search no longer snaps the view
back, diskfont.library released on unmount
1.2
- Iconify: RightAmiga+I sends a window to a Workbench icon,
a click restores it exactly as left; icon built in
- Full-screen paging like CON:: form feed clears and homes,
so More and any repainting program replace the page
instead of scrolling it
- Ed fixed: cursor keys navigate (raw keys back to 8-bit
$9B), and resizing the window re-measures and repaints
- Bug fixes: a narrowed window now re-wraps the transcript
instead of losing it, paste can't overflow the clipboard
buffer, clean handler unmount, history stores each command
once, plus assorted hardening
1.1
- Per-window FONT and real italic/underline/inverse styles
- Alternate screen for Ed/More (paged content stays out of
scrollback)
- Shared, persistent, prefix-filtered command history
- Safe multi-line paste; scrollback content search (Ctrl+R)
- Can replace the system CON:/RAW: KingCON style
1.0
- First release: output scrollback, fullscreen client
support, a readline line editor, fish-style suggestions,
zsh-style Tab completion, copy & paste, the input.device
chain, and stock CON: open/close semantics
CCON: is part of the LTX AmigaTools collection.
|