Chris Collins

Tools · retro

Amiga custom chip registers

Every OCS, ECS and AGA custom chip register at $DFF000, searchable; bit-field decoders for DMACON, INTENA, BPLCON0–4, ADKCON, POTGO and more; a display-window and data-fetch calculator; a blitter minterm calculator; and a copper list assembler and disassembler.

Added

Works with

How to use it
  • Register map — search by name, offset ($096, DFF096), or words in the description; filter by chip and by OCS, ECS, or AGA. Registers with bit fields have a bits button.

  • Bit fields — pick a register and type a value ($83C0, %1000…, or decimal), or click the bits. Each field is decoded with its meaning. For SET/CLR registers it explains what the write does; BPLCON0 summarises the screen mode; VPOSR names the Agnus or Alice revision; BLTCON0 shows its minterm.

  • Display window — width, height, resolution, video standard, and planes give DIWSTRT/DIWSTOP/DDFSTRT/DDFSTOP, BPLCON0, modulos, the chip RAM needed, and a ready-to-use copper list. Out-of-range values are flagged.

  • Blitter minterms — type the function of sources A, B and C (AB + aC, A&B | ~A&C, A^C) and get the LF byte for BLTCON0 with its truth table.

  • Copper lists — write MOVE, WAIT, SKIP, END with register names, and get dc.w words, a C array, or hex. Paste words into Disassemble to read an existing list.

Notes

  • Registers are 16-bit at $DFF000 + offset. Writing a SET/CLR register (DMACON, INTENA, INTREQ, ADKCON) with bit 15 = 1 sets the other bits written as 1; with bit 15 = 0 it clears them. Bits written as 0 are left unchanged.

  • Display window: DIWSTRT holds V7–V0 and H7–H0 of the top-left corner (H8 = 0 implied); DIWSTOP holds the bottom-right corner, with H8 = 1 implied and V8 = NOT V7, so the stop line must be between $80 and $17F. ECS DIWHIGH supplies the missing bits. Standard values for a 320×256 PAL screen are $2C81 and $2CC1.

  • Data fetch: lowres DDFSTRT = (HSTART − 17) / 2 and DDFSTOP = DDFSTRT + 8 × (words − 1); hires uses (HSTART − 9) / 2 and 4 × (words − 2). That gives $38/$D0 for 320 pixels lowres and $3C/$D4 for 640 pixels hires.

  • Minterms: bit n of LF is the output for the source combination where n = 4A + 2B + C. So A = $F0, B = $CC, C = $AA, A AND B = $C0, and the cookie-cut AB + aC = $CA.

  • Copper: MOVE is register, value with an even register offset. WAIT and SKIP have bit 0 of the first word set: VP << 8 | HP | 1, then BFD << 15 | VE << 8 | HE | (1 for SKIP). HP has two-pixel resolution (bit 0 is the opcode bit). $FFFF,$FFFE waits for a position that never comes, so it ends the list. To reach PAL lines beyond 255, wait for $FFDF first.

  • Sources: Amiga Hardware Reference Manual (3rd edition), the ECS and AGA chip documents.

Sharing

Share link copies a link to the open tab with its settings. Readable parameters: ?q= (register map search), ?reg= and ?val= (bit fields; value in decimal), and ?mt= (blitter minterm expression) — for example ?reg=INTENA&val=49152#bits. Display-window settings and copper lists travel packed in ?s=.

Runs entirely in your browser; nothing you type leaves this page.