Ezzel inkább az a bökkenő, hogy a Z80-nak csak két 8 bites regisztere van operandusként a műveletekre, szóval nem tud 32 biten dolgozni, csak max. 16 biten. Viszont maga az ötlet szerintem nagyon jó, egy kis átalakítással
uint16_t lfsr_16(uint16_t in) { uint16_t out; if ( in & 1 ) out = (1<<15)|((in*16807)>>1); else out = in>>1; return(out); }
Akár még Z80-on is működhet. (Megjegyzés, a 16807 nemcsak egy hasraütésszerű szám, hanem ebből az 1988-as véletlenszámokkal foglalkozó, kiváló tanulmányból ered.)