home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 November
/
Chip_1998-11_cd.bin
/
zkuste
/
pascal
/
RT
/
RT.ARJ
/
RTE03SRC.ZIP
/
drv_test.pas
< prev
Wrap
Pascal/Delphi Source File
|
1996-10-14
|
2KB
|
88 lines
{$G+} {286 instruction enabled}
{nedilna soucast clanku RunTime Error at 00:03}
{pouze pro SWCInfo}
uses crt;
PROCEDURE driver; far;assembler; {sem se nahraje driver}
asm dw 104h,106h{init,info}
retf
db 0
db 'nic','$'
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
end;
procedure load_driver(st:string); {nahravac driveru}
var f:file;
nr:integer;
drv_size:longint;
begin
assign(f,st);
reset(f,1);
blockread(f,@driver^,filesize(f),nr);
close(f);
end;
procedure init;far; assembler; {zavola funkci init v driveru}
asm
mov bx,offset driver-100h; {vypocita adresu ulozeni driveru}
add bx,[cs:bx+100h]; {a pripocte zacatek funkce v driveru}
jmp bx; {skoci na vypocitanou adresu}
end;
procedure text; {vypise text ulozeny v driveru}
var xs,xo:word;
start:word;
ch:byte;
begin
xs:=seg(@driver^);
xo:=ofs(@driver^)-$100; {vypocitani adresy driveru}
start:=xo+memw[xs:xo+$102]; {a pripocteni adresy zacatku textu}
repeat
ch:=mem[xs:start];
start:=start+1;
if chr(ch)<>'$' then write(chr(ch));
until chr(ch)='$';
end;
procedure cekej;
begin
repeat until keypressed; readkey;
end;
begin
writeln('Ted neni nahranej zadnej driver');
writeln('Inicializace nema nic delat a vypise se text "nic"');
text;
init;
cekej;
writeln; writeln('Ted je nahran driver cislo 1');
writeln('Nastavi se modra barva okraje obrazovky');
load_driver('d1.drv');
text;
init;
cekej;
writeln; writeln('Nahral jsem driver cislo 2');
writeln('nastavi se zelenej okraj');
load_driver('d2.drv');
text;
init;
cekej;
writeln; writeln('Konecne ... driver no. 3');
writeln('nastavi se cervenej okraj');
load_driver('d3.drv');
text;
init;
cekej;
asm
mov ah,0bh;
mov bh,0
mov bl,0
int 10h
end;
end.