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

Function ide_put_data_2

src/ide.cpp:1330–1375  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1328}
1329
1330static void ide_put_data_2(struct ide_hdf *ide, uae_u16 v, int bussize)
1331{
1332 int inc = bussize ? 2 : 1;
1333 if (IDE_LOG > 4)
1334 write_log (_T("IDE%d DATA write %04x %d/%d %08x\n"), ide->num, v, ide->data_offset, ide->data_size, M68K_GETPC);
1335 if (ide->data_size == 0) {
1336 if (IDE_LOG > 0)
1337 write_log (_T("IDE%d DATA write without request!? %02X PC=%08X\n"), ide->num, ide->regs.ide_status, M68K_GETPC);
1338 return;
1339 }
1340 ide_grow_buffer(ide, ide->packet_data_offset + ide->data_offset + 2);
1341 if (ide->packet_state) {
1342 if (bussize) {
1343 ide->secbuf[ide->packet_data_offset + ide->data_offset + 1] = v & 0xff;
1344 ide->secbuf[ide->packet_data_offset + ide->data_offset + 0] = v >> 8;
1345 } else {
1346 ide->secbuf[(ide->packet_data_offset + ide->data_offset) ^ 1] = (uae_u8)v;
1347 }
1348 } else {
1349 if (bussize) {
1350 ide->secbuf[ide->buffer_offset + ide->data_offset + 1] = v & 0xff;
1351 ide->secbuf[ide->buffer_offset + ide->data_offset + 0] = v >> 8;
1352 } else {
1353 ide->secbuf[(ide->buffer_offset + ide->data_offset)] = (uae_u8)v;
1354 }
1355 }
1356 ide->data_offset += inc;
1357 ide->data_size -= inc;
1358 if (ide->packet_state) {
1359 if (ide->data_offset == ide->packet_transfer_size) {
1360 if (IDE_LOG > 0) {
1361 uae_u16 v = (ide->regs.ide_hcyl << 8) | ide->regs.ide_lcyl;
1362 write_log (_T("Data size after command received = %d (%d)\n"), v, ide->packet_data_size);
1363 }
1364 process_packet_command (ide);
1365 }
1366 } else {
1367 if (ide->data_size == 0) {
1368 process_rw_command (ide);
1369 } else if (((ide->data_offset % ide->blocksize) == 0) && ((ide->data_offset / ide->blocksize) % ide->data_multi) == 0) {
1370 int off = ide->data_offset;
1371 do_process_rw_command(ide);
1372 ide->buffer_offset += off;
1373 }
1374 }
1375}
1376
1377void ide_put_data(struct ide_hdf *ide, uae_u16 v)
1378{

Callers 2

ide_put_dataFunction · 0.85
ide_put_data_8bitFunction · 0.85

Calls 5

ide_grow_bufferFunction · 0.85
process_packet_commandFunction · 0.85
process_rw_commandFunction · 0.85
do_process_rw_commandFunction · 0.85
write_logFunction · 0.70

Tested by

no test coverage detected