Code
Function Centronic(x:integer):integer; export;
(* $000:$0408 содержит базовый адрес для LPT1,
$000:$040A содержит базовый адрес для LPT2,
$000:$040С содержит базовый адрес для LPT3,
$000:$040e содержит базовый адрес для LPT4,
$000:$0411 содержит количество параллельных портов .*)
var
number_of_LPT,LPT1,LPT2,LPT3,LPT4:integer;
lpt1,lpt2,lpt3,lpt4: integer;
begin
number_of_LPT:=mem($40:$11);
(*Считывает количество LPTпортов.*)
number_of_LPT:=( number_of_LPT and (128+64)) shr 6;
lpt1:=0; lpt2:=0; lpt3:=0; lpt4:=0;
lpt1:=memw($40:$08);
(*Процедура считывания из памяти.*)
lpt2:=memw($40:$0A);
lpt3:=memw($40:$0C);
lpt4:=memw($40:$0e);
case x of
0: centronic:=Number_of_LPT;
1: Centronic:=lpt1;
2: Centronic:=lpt2;
3: Centronic:=lpt3;
4: Centronic:=lpt4;
end;
end
Function RS232(X:integer):integer; export;
(* $0000:$0400 содержит базовый адрес порта COM1,
$0000:$0402 содержит базовый адрес порта COM2,
$0000:$0404 содержит базовый адрес порта COM3,
$0000:$0406 содержит базовый адрес порта COM4,
$0000:$0411 содержит количество COMпортов в двоичном формате.*)
var
number_of_COM, COM1, COM2,COM3, COM4:integer;
begin
number_of_COM:=mem($40:$11);
(*Считывает количество COMпортов.*)
number_of_COM:=(number_of_COM and (8+4+2)) shr 1;
COM1:=0; COM2:=0; COM3:=0; COM4:=0;
COM1:=memw($40:$00);
(*Процедура чтения из памяти.*)
COM2:=memw($40:$02);
COM3:=memw($40:$04);
COM4:=memw($40:$06);
Case X of
0: RS232:=number_of_COM;
1: RS232:=COM1;
2: RS232:=COM2;
3: RS232:=COM3;
4: RS232:=COM4;
end;
end;