Dicode pulse-position modulation (PPM) systems suffer from three types of pulse detection errors: wrong-slot, false-alarm and erasure. The author presents an original maximum likelihood sequence detector (MLSD) algorithm that uses the natural pulse sequences in dicode PPM to completely eliminate wrong-slot errors, and reduce the effects of false alarms and erasures. The error performance of a dicode PPM system using such a detector is analysed, and theoretical results are presented for a system transmitting 1 Gbit/s PCM data over a dispersive medium, such as graded-index plastic optical fibre, with a wide-bandwidth receiver and a classical matched filter. It is shown that little is gained if MLSD is used in a low-dispersion link. However, if the link bandwidth is equal to 0.46 times the PCM bit-rate, an MLSD dicode PPM system requires 4.0 × 104 photons per pulse, as opposed to 66 × 104 photons for a system without MLSD. This corresponds to a 12.2 dB increase in sensitivity. It is further shown that an MLSD dicode system can operate down to a bandwidth of 0.29 times the PCM bit-rate, making it an ideal candidate for high-dispersion links.