Hallo und Willkommen im Forum,
Meine Pascal Zeiten liegen schon ein wenig zurück, deshalb kann ich dir nicht sagen ob dass mit den Pointern alles so stimmt.
Aber du verdrehst in deinem Code X und Y, Width und Heights, 80 und 25 ein bisschen. Der Standard Textmodus hat 25 Zeilen à 80 Zeichen.
Dein Scroll z.B. scrollt nicht von Unten nach Oben sondern von Rechts nach Links, wenn ich das richtig lese.
Wenn du das änderst musst du darauf achten, dass du auf deinen TScreen array mit screen^[y,x] zugreifen musst.
Warum dein PutCh kein Zeichen ausgibt kann ich dir leider nicht sagen(außer es geht dir ausschließlich um die Ausgabe Position). Funktioniert dein ClearScreen wirklich? Hast du schon mal andere Zeichen damit ausgegeben als #0, z.B. '#' oder 'x'.