View Single Post
Old 25 May 2019, 03:13   #46
Defendit numerus

ross's Avatar
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 50
Posts: 3,127
Originally Posted by Toni Wilen View Post
This is how game does the disk write:

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?
ross is offline  
Page generated in 0.04307 seconds with 11 queries