The mrd_inject(3mrd) function is a specialized interface to the SCSI Move Medium command. For the robot specified by robot_name, the routine will attempt to move the cartridge in the specified port to the specified slot. Element addresses are zero based. The robot will be opened and the arguments to the function will be verified to make sure they are safe and appropriate. The port and slot address will be verified they are within the valid of those elements on the robot. The volume_tag argument can be used to perform cartridge volume tag verification before the move. If the cartridge volume tag at the port doesn't match that specified by this argument, then mrd_ inject(3mrd) will fail with the status MRD_STATUS_CART_INVALID. If volume_tag argument is a NULL pointer, an empty string or used on a robot without vision support this argument is silently ignored and the volume tag check will not be made. The TL820 family requires special handling within the mrd_ inject(3mrd) routine, because of the way the Input/Output Device (IOD) works. This routine will explicitly check the specified inport to see if it is full. If empty and the robot is a TL820, the Pass-through mechanism will then be checked. If the PTM is full the source address will be reset to the PTM. If both are empty, the routine will send a Ready Inport command to enable the IOD. A one minute polling loop will be performed waiting for the inport to become full, five seconds between polls. If this first loop fails, the Ready Inport will be sent again and the loop repeated. This allows the user two minutes to put a tape into the inport. If volume tag verification is desired on the TL820, the cartridge will be moved to the PTM so the volume tag can be read. If the check fails, the cartridge will left on the PTM. If the mrd_ inject(3mrd) is repeated with the correct volume tag or without one, the cartridge will be found on the PTM and the Move Medium command will proceed from there.