Für Situation 1:
DosBox benutzen oder Programme schreiben welche ein "MainLoop" enthalten, in denen nur alle X Millisekunden auf, zB Keys reagiert wird.
zB mit dem OnIdle-Event der Application. Dieses einer eigenen Funktion zuweisen und dort soetwas wie
Delphi-Quellcode:
if GetTickCount>StartTickcount+250 then
begin
StartTickCount:=GetTickCount;
DoThis:=DoThat(42);
end;