View Single Post
Old 03 October 2021, 21:06   #2
Registered User

Join Date: Feb 2017
Location: Denmark
Posts: 167
Hopefully not too wrong info below (I'm sure people will correct me otherwise )

1. What means copper cycle?
Copper cycle: Cycles where copper can use the bus (no higher priority access, i.e. bitplane). Per HRM:
The Copper is a two-cycle processor that requests the bus only during
odd-numbered memory cycles. This prevents collision with audio, disk,
refresh, sprites, and most low resolution display DMA access, all of which
use only the even-numbered memory cycles.
(odd-numbered means 1st, 3rd etc. = $00, $02, ....).

No other bus usage means copper cycles every other CCK.

If more than 4 lo-res bitplanes are enabled you need to look at the DMA cycle allocation diagram to figure out whether the copper operation will take more CCKs. Outside display area you're usually fine (there are some quirks at the very end/beginning of scalines).

2. Are the values in my table correct?
Skip and wait take the same time, jumps are a separate thing. If I'm reading/remembering correctly 5 bpls steal one copper cycles and 6 steals two per 8 CCKs so your numbers look OK for that (in the display area).

If I tested this, I get some what I'm not expected.
Ok, the move dc.w $180,$444 is 4 CCKs ($34 to $37), but why on $34 and not on $30?
I think Toni renumbered the DMA debug output for 4.9.0 (I guess to better match Agnus?), if you check in 4.4.0 they're more in line with what you're expecting (there a 'W' is also displayed to show where the copper wakes up).

The next the wait-command dc.w $3033,$fffe needs 8 CCKs from $38 to $3F.
Also the next from $40 to $47. One wait is with and one wait is without bitplane.
Only one bitplane is activ. I would expected the next wait-command follows after 6 CCKs.
After your first wait the copper is behind and all waits finish ASAP. I can't find it now, but it was probably in the "Undocumented Amiga hardware stuff" thread, basically copper needs a free cycle (available for CPU/blitter) after waking up, so each of the waits end up taking 8 CCKs (3 normal cycles: 2 to read copper instructions, 1 for wait to finish and one "wasted").
paraj is offline  
Page generated in 0.06180 seconds with 11 queries