Welcome, Guest. Please login or register.

Author Topic: homebrew IDE interface  (Read 4271 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline psxphill

Re: homebrew IDE interface
« on: January 10, 2020, 09:42:44 AM »
How do drivers normally deal with memory-mapped I/O vs. the CPU data cache on Amiga?

Use Zorro II I/O space (0xa00000), instead of RAM space

I saw a page that mentioned someone had patched in an A600 scsi.device to use an A600-compatible (like Gayle or whatever) IDE interface on an A500. Of course this one needs a different driver than that but I like the idea of using a modified motherboard ROM, since putting a boot ROM onto a zorro card doesn't seem to be possible without implementing autoconfig.

You can boot from diagnostic rom 0xf00000, I think that is possible from a zorro 2 slot.

However you're dangerously in territory where you might as well implement autoconfig, and then people might actually want one.
« Last Edit: January 10, 2020, 09:49:15 AM by psxphill »
 

Offline psxphill

Re: homebrew IDE interface
« Reply #1 on: January 12, 2020, 03:27:14 AM »
And what is special about $A00000? It's marked reserved for A2000s on this table https://www.amigacoding.com/index.php/Amiga_memory_map

It's marked correctly in the official documentation.

http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node00D4.html

$00A0 0000 - $00B7 FFFF       Zorro II I/O Expansion Space

You could also try, although you'll need to avoid the configuration registers.

$00E8 0000 - $0EFF FFFF       Zorro II I/O & Configuration

What is special about it, is that because it's for I/O the MMU mapping will be set to non cache-able for that range. Because you never want to cache I/O.

Writing a sector will have thrashed it anyway (as would reading if write-allocate is enabled) so nothing relevant to other tasks remains stored when the driver returns.

I don't know, that is a big assumption and multitasking can make these things way more complicated. Or are you disabling interrupts as well?
« Last Edit: January 12, 2020, 03:31:01 AM by psxphill »
 

Offline psxphill

Re: homebrew IDE interface
« Reply #2 on: January 12, 2020, 12:16:42 PM »
On pages 32 and 44 of the A500 A2000 Technical Reference Manual it describes the collision detection logic. Slave is not allowed to go low for these address regions:

Unless you assert OVR. That extra range for IO might be on the A3000 and later.

You're also not supposed to hard code addresses, so I didn't think you wanted to do anything legally anyway.
« Last Edit: January 12, 2020, 12:17:22 PM by psxphill »