6. Напишите процедуру чтения базовых адресов параллельных и последовательных портов.

 

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;

 

Сайт создан в системе uCoz