asle wrote:
Ok, I repeat, I can't do that, simply because I don't read/write 68k.
Of course you can, it's not hard. Here's what I did:
I disassembled the bootblock of your file, to do that I just created a small source which looked like:
after assembling it, I just typed "dd+12" in Asm1 to disassemble (+12 to skip the first 3 longs, i.e. the bootblock header).
the code looked like this:
Code: Select all
movem.l d0-a6,-(a7) ; save regs
move.l #$1000,$24(a1) ; length in bytes
move.l #$400,$2c(a1) ; start offset
move.l #$30000,$28(a1) ; destination address
move.l $4,a6
jsr -456(a6) ; call Exec's DoIO() routine, i.e. load the file
move.w #$8100,$dff096 ; enable bitplane DMA
jsr $30000
movem.l (a7)+,d0-a6
Now, if you compare that to the code I pasted above you shouldn't have problems to understand what I did and why I did it. Basically I just "emulated" the loading from disk by copying the data to the right location. Whenever you see code like that you can easily create an executable. You need to know 3 things:
1. the start offset [-> $2c(a1)]
2. the length [-> $24(a1)]
3. the destination address [-> $28(a1)]
Once you have that info you can just adapt my "copyloop" above with the right parameters and it should work. Hope that helps, if something is unclear feel free to ask. =)