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

Function ide_write_byte

src/idecontrollers.cpp:1536–1968  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1534}
1535
1536static void ide_write_byte(struct ide_board *board, uaecptr addr, uae_u8 v)
1537{
1538 uaecptr oaddr = addr;
1539 addr &= board->mask;
1540
1541#if DEBUG_IDE
1542 if ((addr & DEBUG_IDE_MASK) == DEBUG_IDE_MASK_VAL) {
1543 write_log(_T("IDE IO BYTE WRITE %08x=%02x %08x\n"), addr, v, M68K_GETPC);
1544 }
1545#endif
1546
1547 if (!board->configured) {
1548 addrbank *ab = board->bank;
1549 if (addr == 0x48) {
1550 if (board->aci->zorro == 2) {
1551 map_banks_z2(ab, v, (board->mask + 1) >> 16);
1552 board->baseaddress = v << 16;
1553 board->configured = 1;
1554 if (board->type == ROCHARD_IDE) {
1555 rochard_scsi_init(board->original_rc, board->baseaddress);
1556#ifdef NCR9X
1557 } else if (board->type == MASOBOSHI_IDE) {
1558 ncr_masoboshi_autoconfig_init(board->original_rc, board->baseaddress);
1559 } else if (board->type == GOLEMFAST_IDE) {
1560 ncr_golemfast_autoconfig_init(board->original_rc, board->baseaddress);
1561#endif
1562 } else if (board->type == DATAFLYERPLUS_IDE) {
1563 dataflyerplus_scsi_init(board->original_rc, board->baseaddress);
1564#ifdef NCR9X
1565 } else if (board->type == TRIFECTA_IDE) {
1566 ncr_trifecta_autoconfig_init(board->original_rc, board->baseaddress);
1567#endif
1568 }
1569 expamem_next(ab, NULL);
1570 }
1571 return;
1572 }
1573 if (addr == 0x4c) {
1574 board->configured = 1;
1575 expamem_shutup(ab);
1576 return;
1577 }
1578 }
1579 if (board->configured) {
1580
1581 if (board->type == BUDDHA_IDE) {
1582
1583 int portnum;
1584 int flashoffset = -1;
1585 bool p1 = (board->aci->rc->device_settings & 3) == 1;
1586 int regnum = get_buddha_reg(addr, board, &portnum, &flashoffset);
1587 if (flashoffset >= 0) {
1588 flash_write(board->flashrom, flashoffset, v);
1589 } else if (regnum >= 0) {
1590 if (board->ide[portnum]) {
1591 put_ide_reg_multi(board, regnum, v, portnum, 1);
1592 }
1593 } else if (addr >= 0xfc0 && addr < 0xfc4) {

Callers 2

ide_write_wordFunction · 0.85
ide_generic_bputFunction · 0.85

Calls 15

map_banks_z2Function · 0.85
rochard_scsi_initFunction · 0.85
dataflyerplus_scsi_initFunction · 0.85
expamem_nextFunction · 0.85
expamem_shutupFunction · 0.85
get_buddha_regFunction · 0.85
flash_writeFunction · 0.85
put_ide_reg_multiFunction · 0.85
get_xsurf_regFunction · 0.85

Tested by

no test coverage detected