Для 128x32 наверное окна не нужны (и Z-координата), но всё
описанное в упрощённом виде таки нужно: 1) храним полную копию в памяти (аж 512 байт);
2) все процедуры отрисовки (прямоугольник, спрайт, строка-текста) дают bounding box испорченной области;
3) боксы умеют объединяться в один больший (объемлющий) при последовательных отрисовках в разных местах;
4) нужно уметь выводить спрайты и теми же функциями шрифты (где буква -- как спрайт);
5) и строку текста (без клиппинга, но выводить только буквы умещающиеся в заданный бокс);
6) и закрашенные прямоугольники (полигоны не нужно, клиппинг не нужен);
7) все окна модальные и полноэкранные (проблема перерисовки и затенения уходит);
8) нужна описанная выше система меню и виджетов (для UI).
Перерисовывается, вычисляется размер бокса который нужно обновить на экране... 10 раз в секунду (по таймеру) прямоугольник который нужно обновить отсылается в дисплей. Хотя в пределе, конечно, можно те 512 байт просто 10 раз в секунду отсылать в дисплей целиком.