it to re-send the last one. There were a number of problems with the protocol. The use of a simple checksum meant some common errors could go unnoticed. The small packet size and requirement to wait for the or led to slow performance on higher speed links or ones with significant latency. Finally, as the transfer contained no details of the file, every file had to be manually started, which could be a chore when many small files were being transferred. Solutions to these problems were developed during the early 1980s. XMODEM-CRC replaced the checksum with a 16-bit cyclic redundancy check (CRC), which was much more resistant to common errors. XMODEM-1k expanded the packet size from 128 bytes to 1024, improving performance on higher-speed connections, while others, like WXMODEM and SEAlink instead introduced sliding window systems to combat both performance and latency, at the cost of some complexity. Still others, like TeLink and MODEM7, added file information so that a single transfer could contain multiple files, allowing batches of files to be sent with a single command. YMODEM Chuck Forsberg, author of the CP/M "Yet Another Modem program", or YAM, decided to write a single protocol driver that supported many features compared to XMODEM and called it YMODEM. When the users started a transfer they could indicate which options they wanted on the command line, for instance, saying they wished to use CRC. The protocol was written so that it would attempt this style, but gracefully fall-back to match whatever capabilities the remote software did implement. Abort One problem with the original XMODEM was that there was no defined way to abort the transfer once started. The normal solution was to send s to every subsequent packet if the user requested it. Since the XMODEM protocol defined a limit of ten s to abort a send, and each packet might take a second to send, this meant there was a ten second delay where the sender continually sent data that was simply ignored. Some implementations had added the ability to send a instead of or at the end of a received packet to indicate an abort. Unfortunately, there was the possibility that a could be generated by line noise and trigger an abort. YAM thus modified this slightly to require two s back-to-back, which would immediately perform a "graceful abort" on the sender end. CRC CRC support had been introduced