Что бы экран очищался правильно, нужно атрибуты устанавливать не только для основного экрана, но и для окна системных сообщений.

void setattr(char attrib){
__asm
ld hl, #2
add hl, sp
ld a, (hl)
ld (23693), a
ld (23624),a
__endasm;
}