Program pre prácu s buferom klávesnice v pascale
Delphi & Pascal (česká wiki)
Kategória: Programy v Pascale
Program: Simf2.pas
Súbor exe: Simf2.exe
Program: Simf2.pas
Súbor 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.