Program pre prácu s buferom klávesnice v pascale

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: Programy v Pascalu

Program: Simf2.pas
Soubor exe: Simf2.exe

Simuluje stlačenie klávesu F2 v pascale. Podstata je v tom že program naplní buffer klávesnice a má zakomponovanú funkciu ktorá zobrazuje stav buffra. Použiteľné aj dnes, pretože buffer napĺňa BIOS a nie operačný systém. Program som používal ako automatického prihlasovateľa, ktorý za mňa vykonal všetky potrebné úkony. Muselo to byť však maximálne 32 stlačení klávesu, pretože práve taký veľký je buffer klávesnice.
{ SIMF2.PAS                 Copyright (c) TrSek alias Zdeno Sekerak }
{ Simuluje stlacenie klavesy F2 tak ze ju zapise do buffera         }
{ klavesnice. Chytre a pomoze. Moze sa tak odsimulovat viacero      }
{ stlaceni klavesnice.                                              }
{                                                                   }
{ Datum:15.12.1995                             http://www.trsek.com }
 
program simulF2;
 
uses crt,dos;
var REG:registers;
    i,p:integer;
    memy:array[0..$20] of byte;
 
procedure vypis;
begin
  p:=p+1;
  writeln('Poradie [',p,']');
  writeln('mem 41A-41D= [',mem[0:$41a],':',mem[0:$41b],'] - [',mem[0:$41c],':',mem[0:$41d],']');
  writeln('mem 480-483= [',mem[0:$480],':',mem[0:$481],'] - [',mem[0:$482],':',mem[0:$483],']');
  for i:=0 to $20 do begin
      if memy[i]<>mem[0:$41E+i] then textbackground(blue)
                                else textbackground(black);
      if (i+$20>=mem[0:$41a]) and (i+$20<=1+mem[0:$41c]) then
                                     textcolor(Yellow)
                                else textcolor(white);
      write(mem[0:$41E+i]:3,',');
      end;
  textbackground(black);
  textcolor(white);
  writeln;
  writeln;
end;
 
procedure uchovaj;
begin
  for i:=0 to $20 do memy[i]:=mem[0:$41E+i];
end;
 
procedure cle;
begin
  for i:=0 to $20 do mem[0:$41E+i]:=255;
end;
 
begin
 clrscr;p:=0;
{  tato cast vypisuje obsah buffera klavesnice,                   }
{  ak chcete odchytit neake klavesy odkomentujte nasledujucu cast }
{ cle;
 uchovaj;
 repeat
  vypis;
  uchovaj;
  delay(100);
  reg.ah:=$10;
  reg.al:=0;
  intr($16,reg);
 until (1=2);
 exit;
 repeat
  reg.ax:=$100;
  intr($16,reg);
  write  (reg.ah,'  ');
  writeln(reg.al,'  ');
  writeln;
 until(1=2);
 
 uchovaj;
 vypis;}
 
 REG.AX:=0;
 REG.AH:=5;
 REG.CL:=0;
 REG.CH:=0;
 intr($16,REG);
 
 REG.AX:=0;
 REG.AH:=5;
 REG.CL:=0;
 REG.CH:=60;
 intr($16,REG);
 mem[0:$400+mem[0:$41a]+2]:=224;
end.