Keep

Z Delphi & Pascal (česká wiki)
Verze z 2. 10. 2012, 15:25, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (Založena nová stránka: Ukončí běh programu, ale ponechá jej v paměti. ;Deklarace procedure Keep(ExitCode: Word); ;Režim :Reálný, Chráněný ;Poznámky :Celý program zůstane v pa…)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

Ukončí běh programu, ale ponechá jej v paměti.

Deklarace
procedure Keep(ExitCode: Word);
Režim
Reálný, Chráněný
Poznámky
Celý program zůstane v paměti, včetně datového segmentu, zásobníkového segmentu a haldy, takže nezapomeňte určit pomocí direktivy kompilátoru $M maximální velikost haldy. ExitCode odpovídá výstupnímu kódu, předanému standardní proceduře Halt.


Omezení
Používejte opatrně! Rezidentní programy (TSR) jsou složité a není pro ně poskytována žádná jiná podpora. Informujte se v technické dokumentaci DOSu.


Viz také
DosExitCode


Vzorový příklad

 { Keep.PAS }
 { Příklad na Keep }
 {$M $800,0,0 }   { 2K zásobníku, žádná halda }
 { Tento program při každém stisku klávesy cvakne.}
 uses Crt, Dos;
 var
   KbdIntVec : Procedure;

 {$F+}
 procedure Keyclick; interrupt;
 begin
   if Port[$60] < $80 then
     { Cvakne jen při stisku klávesy }
     begin
     Sound(5000);
     Delay(1);
     Nosound;
     end;

   inline ($9C); { PUSHF -- Push flags }
   { Volej starý ovladač }
   KbdIntVec;
 end;
 {$F-}

 begin
   { Vlož přerušovací proceduru do řetězce ovladačů klávesnice }
   GetIntVec($9,@KbdIntVec);
   SetIntVec($9,Addr(Keyclick));
   Keep(0); { Ukonči a zůstaň rezidentní }
 end.