Quote:
Originally Posted by Toni Wilen
This is how game does the disk write:
Code:
00C1A106 1039 00bf dd00 MOVE.B $00bfdd00,D0
00C1A10C 1039 00bf dd00 MOVE.B $00bfdd00,D0
00C1A112 0800 0004 BTST.L #$0004,D0
00C1A116 67f4 BEQ.B #$f4 == $00c1a10c
00C1A118 33fc d955 00df f024 MOVE.W #$d955,$00dff024
00C1A120 33fc d955 00df f024 MOVE.W #$d955,$00dff024
00C1A128 1039 00bf dd00 MOVE.B $00bfdd00,D0
00C1A12E 1039 00bf dd00 MOVE.B $00bfdd00,D0
00C1A134 0800 0004 BTST.L #$0004,D0
00C1A138 67f4 BEQ.B #$f4 == $00c1a12e
00C1A13A 33fc 4000 00df f024 MOVE.W #$4000,$00dff024
00C1A142 33fc 0002 00df f09c MOVE.W #$0002,$00dff09c
|
Hi Toni, as known HRM recommends to set #$4000,DSKLEN for idle mode after a write (or to break DMA on disk as in this case).
But there would have been some difference using instead a MOVE.W #$0000,DSKLEN?
It is perhaps to avoid that assembler optimization uses clr.w (double access on 000) on this write only register?
Any differences using MOVE.W #$10,DMACON to forcibly stop DMA?