Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

The Console

Pick Console... from the status-bar menu (or press Cmd+K / Alt+K) to open the debugger console: a GDB-flavoured command line in its own tool window. Like the debugger and Frame Analyzer it is a separate host window, so all three can be visible at once -- console on one side driving execution, the debugger’s disassembly and the analyzer’s beam view updating beside it.

The debugger console

A console session: a breakpoint set, hit, and inspected.

Opening the console pauses the machine (RUN resumes it); closing it restores the previous run state. The prompt takes any printable text; Enter executes, Backspace edits, Up / Down walk the command history, and PageUp / PageDown or the mouse wheel scroll the output. Cmd+V (macOS) or Ctrl+V pastes the host clipboard -- a multi-line paste executes each complete line in order and leaves the trailing fragment in the prompt, so a saved command script can be replayed with one paste. Commands are case-insensitive; addresses and values are hex (a leading $ is fine), beam positions (VPOS, HPOS) are decimal, matching the coordinates every other debugger surface displays.

The console drives the same machinery as the debugger window and the GDB stub, so everything set here shows there and vice versa: a BREAK lands in the Break tab’s list, a BTRAP fires with the same exact-colour-clock semantics, and stops report in the console when it caused the run.

Commands

Execution:

CommandEffect
RUNResume the machine (also GO, C)
PAUSEPause and report where the machine is
STEP [N], SExecute N instructions (default 1)
OVER, NStep over a BSR/JSR/TRAP call
OUTRun until the current subroutine returns
FRAME, FRun one video frame
LINERun to the start of the next scanline
CSTEPRun until the Copper retires one instruction
RUNTO ADDRRun until the PC reaches ADDR
TOSLOT V [H]Run until the beam reaches the position
RSTEP [N]Step backward (reverse debugging)
RFRAMEStep one frame backward
RRUNRun backward to the previous breakpoint

Every forward command ends by printing the stop reason (if a breakpoint, watchpoint, trap, or catchpoint fired) and a status line: the PC with its disassembled instruction, SR, beam position, and frame.

Stops (each toggles: repeat the command to remove):

CommandEffect
BREAK ADDR [COND] [IGN N], BPC breakpoint, with the Break tab’s condition grammar
WATCH ADDR [CPU|BLITTER|DISK], WMemory word watchpoint; the optional filter stops only on that writer
RWATCH NAME|OFFCustom-register write watch (RWATCH DMACON)
BTRAP V [H]Beam trap (decimal position)
CBREAK ADDRCopper breakpoint
CATCH IRQ N | TRAP N | VEC NException catchpoint
BREAKSList everything armed
CLEARBREAKSRemove everything

Inspection and modification:

CommandEffect
STATUSPC/SR/beam/frame summary
REGS, RThe register file
MEM ADDR [BYTES], MHex/ASCII dump (default 64 bytes)
DIS [ADDR] [N], DDisassemble (default: at the PC)
COPPER [PC|ADDR] [N]Copper list around the live Copper PC
CUSTOMKey custom registers
BLITSBlits started in the traced frame (needs the Frame Analyzer open): control words, size, pointers, beam start/end
FIND HEXBYTES [START]Search CPU-visible memory
WRITER ADDRLast instruction that wrote ADDR (reverse history)
HISTORY [N], HThe most recent retired PCs, disassembled (recorded while a debug window is open)
STACK, BTHeuristic call-stack walk: stack longwords that look like return addresses after a JSR/BSR
POKE ADDR VALWrite a memory word
SETREG REG VALSet a CPU register (SETREG D0 1234)
TRACE START [PATH]Start a runtime instruction trace: one disassembled line per retired instruction with its beam position, no env var or restart needed (capped at a million lines)
TRACE STOP / TRACEStop the trace / report its progress
HELP, CLEAR, CLOSEConsole housekeeping

Memory hunting (a trainer-style delta search over all writable RAM -- chip, slow, and Zorro RAM boards):

CommandEffect
HUNT START [B|W]Snapshot RAM and begin a byte- or word-wide (default) hunt
HUNT EQ|NE|LT|GT VALUEKeep candidates whose current value compares to VALUE (hex)
HUNT SAME / HUNT DIFFKeep candidates unchanged / changed since the last filter
HUNT LIST [N]Show surviving candidates with live values
HUNT OFFForget the hunt

The classic workflow: HUNT START, HUNT EQ 3 while you have three lives, lose one, HUNT EQ 2 -- the survivor is your lives counter, ready for WATCH (who decrements it?) or POKE.

AmigaOS introspection (read-only walks of exec’s lists, safe at any time -- if the OS is not up yet the command says so instead of printing garbage):

CommandEffect
TASKSThe scheduled task (>), then the ready and waiting lists, with priority, state, and name
LIBSOpened libraries with versions (graphics.library v40.10)
DEVSDevices with versions
RESOURCES, PORTSThe resource and message-port lists
SEGMENTSThe current process’s loaded hunks (its CLI command’s segment list when there is one), with the add-symbol-file line a source-level GDB session needs
CATCHTASK NAMEStop when exec schedules a task whose name contains NAME (case-insensitive); CATCHTASK alone clears it
CATCHALERTBreak at exec’s Alert() entry: fires on every guru/alert with D7 holding the code
GURU [CODE]Decode an alert code (default: the current D7): deadend flag, subsystem, cause, CPU-trap alerts

CATCHTASK is the tool for “wake me when my process actually runs”: it baselines on the currently scheduled task and fires on the next reschedule to a matching one, reporting the task’s name and address.

CATCHALERT plus GURU is the crash workflow: arm the catch, and when the machine stops in Alert(), GURU translates D7 into words (DEADEND exec.library, no memory). A CPU double fault -- a bus or address error during exception processing, the condition even the OS cannot report -- is always surfaced: the machine pauses with a “CPU halted: double fault” message on screen, in the console, and on the Break tab.