The current writeAt command ignoes the passed row and column
void writeAt(int column, int row, String text) {
Console.saveCursor();
write(text);
Console.restoreCursor();
}
It should be:
void writeAt(int column, int row, String text) {
Console.saveCursor();
move(column, row);
write(text);
Console.restoreCursor();
}