The old code was assuming that the buffer was not going to change, this is not true with the current impl though where the list is shifted and ybase and ydisp need to be compensated for that.