MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / ide_read_word

Function ide_read_word

src/idecontrollers.cpp:1181–1534  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1179}
1180
1181static uae_u32 ide_read_word(struct ide_board *board, uaecptr addr)
1182{
1183 uae_u32 v = 0xffff;
1184
1185 addr &= board->mask;
1186
1187 if (addr < 0x40 && (!board->configured || board->keepautoconfig)) {
1188 v = board->acmemory[addr] << 8;
1189 v |= board->acmemory[addr + 1];
1190 return v;
1191 }
1192
1193 if (board->type == APOLLO_IDE) {
1194
1195 if (addr >= APOLLO_ROM_OFFSET) {
1196 if (board->rom) {
1197 v = board->rom[(addr + 0 - APOLLO_ROM_OFFSET) & board->rom_mask];
1198 v <<= 8;
1199 v |= board->rom[(addr + 1 - APOLLO_ROM_OFFSET) & board->rom_mask];
1200 }
1201 }
1202
1203 } else if (board->type == DATAFLYERPLUS_IDE) {
1204
1205 if (!(addr & 0x8000) && (board->subtype & 2)) {
1206 if (board->rom) {
1207 v = board->rom[(addr + 0) & board->rom_mask];
1208 v <<= 8;
1209 v |= board->rom[(addr + 1) & board->rom_mask];
1210 }
1211 }
1212
1213 } else if (board->type == ROCHARD_IDE) {
1214
1215 if (addr < 8192) {
1216 if (board->rom) {
1217 v = board->rom[(addr + 0) & board->rom_mask];
1218 v <<= 8;
1219 v |= board->rom[(addr + 1) & board->rom_mask];
1220 }
1221 }
1222
1223 }
1224
1225 if (board->configured) {
1226
1227 if (board->type == BUDDHA_IDE) {
1228
1229 int portnum;
1230 int regnum = get_buddha_reg(addr, board, &portnum, NULL);
1231 if (regnum == IDE_DATA) {
1232 if (board->ide[portnum]) {
1233 v = get_ide_reg_multi(board, IDE_DATA, portnum, 1);
1234 }
1235 } else {
1236 v = ide_read_byte(board, addr) << 8;
1237 v |= ide_read_byte(board, addr + 1);
1238 }

Callers 3

ide_read_wordiFunction · 0.85
ide_generic_wgetFunction · 0.85
ide_generic_lgetFunction · 0.85

Calls 15

get_buddha_regFunction · 0.85
get_ide_reg_multiFunction · 0.85
ide_read_byteFunction · 0.85
get_alf_regFunction · 0.85
get_ide_regFunction · 0.85
get_xsurf_regFunction · 0.85
get_golemfast_regFunction · 0.85
get_masoboshi_regFunction · 0.85
get_trifecta_regFunction · 0.85
apollo_scsi_bgetFunction · 0.85
get_apollo_regFunction · 0.85
is_gvp1_intreqFunction · 0.85

Tested by

no test coverage detected