[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]
{IDIOT PASCAL 101
----------------
Welcome to IP 101. In today's lesson we will be answering a few
often asked questions about Turbo Pascal. if you signed up For
IDIOT C/C++ 101, please get up and run beFore you get shot.
Q: HOW do I TURN ofF/ON THE KEYBOARD FROM MY Program?
A: Easy. Though you may search through many books, you will find
the answer in a Excellent reference called _THE MS-Dos
ENCYCLOPEDIA_. It tells of a mystical I/O port where you can
turn off/on the keyboard by just flipping a bit. This port is
the 8259 Programmible Interrupt Controller. Now, part of the
8259 is the Interrupt Mask Register, or IMR For short. The
port location is $21. to turn off the Keyboard...(RECKLESSLY)
} Procedure KEYBOARD_ofF;
begin
PorT[$21]:=$02
end;
{
to turn the keyboard back on (RECKLESSLY), just set the port
back to $0.
(THE MSDos ENCYCLOPEDIA (C) 1988 Microsoft Press p417)
Q: HOW do I FLIP BITS ON/ofF in A Byte or Integer?
A: Simple, Really. The following Procedures work on both
Byte,Char,Boolean,Integer, and Word values(I hope).
}
Procedure SBIT(Var TARGET;BITNUM:Integer); {set bit}
Var
SUBJECT : Integer Absolute TARGET;
MASK : Integer;
begin
MASK := 1 SHL BITNUM;
SUBJECT := SUBJECT or MASK
end;
Procedure CBIT(Var TARGET;BITNUM:Integer); {clear bit}
Var
SUBJECT : Integer Absolute TARGET;
MASK : Integer;
begin
MASK := not(1 SHL BITNUM);
SUBJECT := SUBJECT and MASK
end;
Procedure SETBIT(Var TARGET;BITNUM:Integer;VALUE:Byte);{control}
{Proc. }
begin
if VALUE = 1 then
SBIT(TARGET,BITNUM)
else
CBIT(TARGET,BITNUM)
end;
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]