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.

Debugger console

The debugger console provides an interactive command line in the Debug workspace. Open it with Cmd+K on macOS, Alt+K on Linux/Windows, or select Console in the workspace.

Opening the first inspector pauses emulation (RUN resumes execution). Switching inspectors preserves command text, output, history, and the current run/pause state. Closing one leaves the remaining inspectors open; closing the last restores the previous execution state. Explicit Run/Pause choices apply to the shared session. The title bar’s Play switch hides the inspectors without closing them or changing the current run/pause state; their command text and history are still there when you return.

Console with selectable output and an editable command field

Inspector-only preview of the Console.

Guest debug output sent via the uaelib trap KPrintF helper or the memory-mapped printf ports appears in the console as DBG: lines and is mirrored to the host terminal. New lines refresh the console while paused too, including after single steps and breakpoints. The most recent 500 guest debug lines are retained while the console is closed and shown when it opens. Older lines are discarded; CLEAR also clears this retained guest log.

Input navigation:

Commands are case-insensitive. Addresses and data values are hexadecimal (optional $ or 0x prefix); raster beam coordinates (VPOS, HPOS) and the counts noted below are decimal.

Command reference

Execution control

CommandDescription
RUN (or GO, CONTINUE, C)Resume execution
PAUSEPause execution and print the PC, SR, beam position, and frame
STEP [N] (or S)Single-step N CPU instructions (decimal, default 1)
OVER (or NEXT, N)Step over a BSR, JSR, or TRAP call
OUT (or FINISH)Run until the current subroutine returns (RTS/RTE/RTR)
FRAME (or F)Advance execution by one video frame
LINERun to the start of the next scanline
CSTEPAdvance execution by one Copper instruction
RUNTO ADDRRun until the PC reaches ADDR
OUTROMRun until the PC leaves the Kickstart ROM window ($F80000-$FFFFFF)
TOSLOT V [H]Run until the beam reaches raster position (VPOS, HPOS)
RSTEP [N] (or RS)Step back N CPU instructions (decimal, default 1)
RFRAMEStep back one video frame
RRUN (or RC)Run backward to the previous breakpoint or watchpoint hit

STEP, OVER, OUT and RUNTO carry a CPU parked in STOP to the interrupt that wakes it -- a stopped 68000 retires nothing until one arrives -- so a single STEP there retires the handler’s first instruction. A CPU no interrupt can reach (SR mask 7, or nothing enabled in INTENA) stays stopped after two video frames of waiting.

Breakpoints and watchpoints

CommandDescription
BREAK ADDR [COND] [IGN N] (or B)Toggle a PC breakpoint, with an optional condition and ignore count in the Break tab’s syntax
WATCH ADDR [CLASS] [PC=ADDR] (or W)Toggle a watchpoint on the word at ADDR. CLASS limits it to one writer: CPU, BLITTER, DISK, COPPER, or a DMA channel (BPL1..BPL8, SPR0..SPR7, AUD0..AUD3). PC=ADDR limits it to CPU writes made by the instruction at that address
RWATCH NAME|OFFSET (or RW)Toggle a custom register write watch (e.g. RWATCH DMACON or RWATCH 96)
MWATCH ADDR[:LEN] [READ|WRITE|ACCESS] (or MW)Toggle an MMIO (CPU access) watch over LEN bytes (hex, default 2) at ADDR: stops after any CPU data access to the range in the class (default ACCESS), reporting size, value, direction, PC, frame, beam position, and colour clock. Works on device registers such as Akiko’s (MWATCH B80000:40), which a value-comparing WATCH cannot see; see MMIO watches
BTRAP V [H]Toggle a raster beam trap at decimal coordinates (VPOS, HPOS)
CBREAK ADDRToggle a Copper breakpoint at a Copper-list address
CATCH IRQ N | TRAP N | VEC NToggle an exception catch: interrupt level 1-7, TRAP #0-#15, or vector 2-255 (decimal)
BREAKS (or INFO)List all breakpoints, watches, traps, and catches
CLEARBREAKSRemove all breakpoints, watches, traps, and catches

Memory and state inspection

CommandDescription
STATUSPrint the PC (with its instruction), SR, beam position, and frame count
REGS (or R)Display the 68000 register file (D0-D7, A0-A7, SR, PC)
MEM ADDR [BYTES] (or M)Hex/ASCII memory dump; BYTES is hex (default 40, 64 bytes; at most 400)
DIS [ADDR] [N] (or D)Disassemble N instructions (decimal, default 8, at most 32) from ADDR (default: PC)
COPPER [PC|ADDR] [N]Disassemble the Copper list around the Copper PC (the default) or from ADDR, N instructions (decimal, default 16, at most 64)
CUSTOM [REG]Display the chipset summary, or one register (by name or offset) with its access/chipset documentation and decoded fields
BLITSList all blits referenced by the traced frame, including stable ID, cross-frame beam span, direction/fill/line mode, channels, pointers/modulos, shifts/masks/minterm, and clocks used versus stalled (requires Frame Analyzer)
CPUWAITSummarize the traced frame’s CPU chip-bus waits: waited clocks by denier (bitplane, Copper, blitter with BLTPRI clear or set, ...) and by access kind, and the instructions that waited longest (requires Frame Analyzer; see the CPU wait view)
FIND HEXBYTES [START]Search CPU-visible memory (RAM and ROM) for a byte sequence, from START (default 0) and wrapping round
WRITER ADDRReplay retained snapshots to the last observed change of the word at ADDR; moves execution back to that point
CDTRACE [N]List the CD drive’s last N commands (default 16), oldest first: emulated issue time, decoded kind, sector range, speed, reply status, and each later step as milliseconds after issue, with the outcome (CD32 Akiko; see the CD tab)
DBGRESList debug resources (bitmaps, palettes, copper lists) registered by guest code via the uaelib trap (distinct from RESOURCES, which lists Exec OS resource nodes)
HISTORY [N] (or H)Disassemble the last N retired instructions (decimal, default 16, at most 64), recorded while the debugger or console is open
STACK (or BT)Heuristic stack trace of recent return addresses
POKE ADDR VALWrite a word to memory (ADDR rounded down to even)
POKE ADDR VAL VAL ...Write a byte sequence from ADDR: hex byte pairs, as FIND takes them (POKE 60000 12 34 56)
POKE.B | POKE.W | POKE.L ADDR VAL [VAL ...]Write one or more bytes, words, or longs consecutively from ADDR (.W/.L round it down to even). A value wider than the size is refused, not truncated
SETREG REG VALSet a CPU register (D0-D7, A0-A7, SP, SR, or PC), e.g. SETREG D0 1234
TRACE START [PATH]Log the disassembly of every executed instruction to PATH (default: a copperline-trace-*.txt file in the traces folder), up to 1,000,000 lines
TRACE STOPStop instruction trace logging
TRACEReport the running trace’s file and line count
WAVE START [ARGS] (or WAVEFORM)Arm a VCD logic analyser capture (see Waveform export (VCD logic analyzer))
WAVE STOPStop VCD capture
WAVEReport the VCD capture’s state
HELP (or ?)Display command summary
CLEARClear the console output
CLOSE (or QUIT, EXIT)Close the console

Every POKE form is a plain CPU-visible RAM write with the semantics of the control protocol’s mem.write and the Memory tab’s editor: ROM, overlay ROM, and device windows are refused and reported, and memory watchpoints are rebaselined so the poke itself does not stop the machine.

WRITER compares the word after each CPU step. It misses writes that leave the value unchanged, and its reported PC is the CPU instruction around the change, which alone does not establish whether the CPU or DMA wrote it. Use a source-filtered WATCH when that distinction matters. RWATCH watches custom-register writes; it is not a reverse memory query.

Memory delta search (Trainer / Value hunter)

CommandDescription
HUNT START [B|W]Snapshot writable RAM and begin a byte or word search (default: word)
HUNT EQ|NE|LT|GT VALKeep the candidates whose current value compares with VAL (hex)
HUNT SAME / HUNT DIFFKeep the candidates whose value is unchanged / changed since the last filter
HUNT LIST [N]Display the surviving candidates (decimal N, default 16, at most 64)
HUNTReport the search’s width and candidate count
HUNT OFFReset memory search state

AmigaOS and Exec introspection

CommandDescription
TASKSList active, ready, and waiting Exec tasks
TASK [ADDR|NAME]Inspect detailed Task or Process structure
EXECBASE (or EXEC)Display ExecBase scheduler counters and Disable()/Forbid() nesting
MEMLIST (or AVAIL)Display free memory headers and memory fragmentation
LIBS (or LIBRARIES)List active library bases and versions
DEVS (or DEVICES)List active device drivers
RESOURCES, PORTSList Exec resources and public message ports
SEGMENTSDisplay the loaded hunk segments of the current process, with a matching GDB add-symbol-file line
WHO ADDRResolve an address through live library/device LVO targets and ROM resident modules (for example, [exec] AllocMem+$12)
CATCHTASK [NAME]Break when Exec schedules a task whose name contains NAME; without NAME, clear the catch
CATCHALERTToggle a breakpoint on exec.library/Alert() (Guru Meditation); at the stop, D7 holds the alert code
GURU [CODE]Decode a Guru alert number (default: the value in D7)