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

Function cdrom_run_command_run

src/akiko.cpp:1237–1293  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1235}
1236
1237static void cdrom_run_command_run (void)
1238{
1239 int len;
1240
1241 cdrom_command_length = 0;
1242 cdrom_command_active = 0;
1243
1244 memset (cdrom_result_buffer, 0, sizeof (cdrom_result_buffer));
1245
1246 if (cdrom_checksum_error || cdrom_unknown_command) {
1247 cdrom_result_buffer[0] = (cdrom_command & 0xf0) | 5;
1248 if (cdrom_checksum_error)
1249 cdrom_result_buffer[1] |= CH_ERR_CHECKSUM | cdrom_door;
1250 else if (cdrom_unknown_command)
1251 cdrom_result_buffer[1] |= CH_ERR_BADCOMMAND | cdrom_door;
1252 len = 2;
1253 cdrom_start_return_data (len);
1254 return;
1255 }
1256
1257 switch (cdrom_command & 0x0f)
1258 {
1259 case 0:
1260 len = 1;
1261 cdrom_result_buffer[0] = cdrom_command;
1262 break;
1263 case 1:
1264 len = cdrom_command_stop ();
1265 break;
1266 case 2:
1267 len = cdrom_command_pause ();
1268 break;
1269 case 3:
1270 len = cdrom_command_unpause ();
1271 break;
1272 case 4:
1273 len = cdrom_command_multi ();
1274 break;
1275 case 5:
1276 len = cdrom_command_led ();
1277 break;
1278 case 6:
1279 len = cdrom_command_subq ();
1280 break;
1281 case 7:
1282 len = cdrom_command_status ();
1283 break;
1284 default:
1285 len = 0;
1286 break;
1287 }
1288 if (len == 0) {
1289 set_status(CDINTERRUPT_DRIVEXMIT);
1290 return;
1291 }
1292 cdrom_start_return_data (len);
1293}
1294

Callers 1

akiko_internalFunction · 0.85

Calls 9

cdrom_start_return_dataFunction · 0.85
cdrom_command_stopFunction · 0.85
cdrom_command_pauseFunction · 0.85
cdrom_command_unpauseFunction · 0.85
cdrom_command_multiFunction · 0.85
cdrom_command_ledFunction · 0.85
cdrom_command_subqFunction · 0.85
cdrom_command_statusFunction · 0.85
set_statusFunction · 0.70

Tested by

no test coverage detected