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

Function scsi_read_cd_da

src/blkdev.cpp:1349–1386  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1347}
1348
1349static int scsi_read_cd_da(int unitnum, uae_u8 *cmd, uae_u8 *data, struct device_info *di)
1350{
1351 struct blkdevstate *st = &state[unitnum];
1352 int msf = cmd[0] == 0xd9;
1353 int start = msf ? msf2lsn(rl(cmd + 2) & 0x00ffffff) : rl(cmd + 2);
1354 int len = rl(cmd + 6) & 0x00ffffff;
1355 int sectorsize;
1356 uae_u8 subcode = cmd[10];
1357 switch (subcode)
1358 {
1359 case 0:
1360 sectorsize = 2352;
1361 break;
1362 case 1:
1363 sectorsize = 2368;
1364 break;
1365 case 2:
1366 sectorsize = 2448;
1367 break;
1368 case 3:
1369 sectorsize = 96;
1370 break;
1371 default:
1372 return -1;
1373 }
1374 if (msf) {
1375 int end = msf2lsn(len);
1376 len = end - start;
1377 if (len < 0)
1378 return -1;
1379 }
1380 if (len == 0)
1381 return 0;
1382 int v = sys_command_cd_rawread(unitnum, data, start, len, sectorsize);
1383 if (v > 0)
1384 st->current_pos = start + len;
1385 return v;
1386}
1387
1388static int scsi_read_cd(int unitnum, uae_u8 *cmd, uae_u8 *data, struct device_info *di)
1389{

Callers 1

scsi_cd_emulateFunction · 0.85

Calls 3

msf2lsnFunction · 0.85
sys_command_cd_rawreadFunction · 0.85
rlFunction · 0.70

Tested by

no test coverage detected