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   
Pascal/Delphi Source File  |  1996-10-14  |  2KB  |  88 lines

  1. {$G+} {286 instruction enabled}
  2.  
  3. {nedilna soucast clanku RunTime Error at 00:03}
  4. {pouze pro SWCInfo}
  5.  
  6. uses crt;
  7.  
  8. PROCEDURE driver; far;assembler;  {sem se nahraje driver}
  9.  asm dw 104h,106h{init,info}
  10.      retf
  11.      db 0
  12.      db 'nic','$'
  13.      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
  14.      dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  15.      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
  16.      dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  17.      end;
  18.  
  19. procedure load_driver(st:string); {nahravac driveru}
  20. var f:file;
  21.     nr:integer;
  22.     drv_size:longint;
  23. begin
  24.   assign(f,st);
  25.   reset(f,1);
  26.   blockread(f,@driver^,filesize(f),nr);
  27.   close(f);
  28. end;
  29.  
  30. procedure init;far; assembler;  {zavola funkci init v driveru}
  31. asm
  32.   mov bx,offset driver-100h;     {vypocita adresu ulozeni driveru}
  33.   add bx,[cs:bx+100h];           {a pripocte zacatek funkce v driveru}
  34.   jmp bx;                        {skoci na vypocitanou adresu}
  35. end;
  36.  
  37. procedure text;                  {vypise text ulozeny v driveru}
  38. var xs,xo:word;
  39.     start:word;
  40.     ch:byte;
  41. begin
  42.   xs:=seg(@driver^);
  43.   xo:=ofs(@driver^)-$100;       {vypocitani adresy driveru}
  44.   start:=xo+memw[xs:xo+$102];   {a pripocteni adresy zacatku textu}
  45.   repeat
  46.     ch:=mem[xs:start];
  47.     start:=start+1;
  48.     if chr(ch)<>'$' then write(chr(ch));
  49.   until chr(ch)='$';
  50. end;
  51.  
  52. procedure cekej;
  53. begin
  54.   repeat until keypressed; readkey;
  55. end;
  56.  
  57. begin
  58.   writeln('Ted neni nahranej zadnej driver');
  59.   writeln('Inicializace nema nic delat a vypise se text "nic"');
  60.   text;
  61.   init;
  62.   cekej;
  63.   writeln; writeln('Ted je nahran driver cislo 1');
  64.   writeln('Nastavi se modra barva okraje obrazovky');
  65.   load_driver('d1.drv');
  66.   text;
  67.   init;
  68.   cekej;
  69.   writeln; writeln('Nahral jsem driver cislo 2');
  70.   writeln('nastavi se zelenej okraj');
  71.   load_driver('d2.drv');
  72.   text;
  73.   init;
  74.   cekej;
  75.   writeln; writeln('Konecne ... driver no. 3');
  76.   writeln('nastavi se cervenej okraj');
  77.   load_driver('d3.drv');
  78.   text;
  79.   init;
  80.   cekej;
  81.   asm
  82.     mov ah,0bh;
  83.     mov bh,0
  84.     mov bl,0
  85.     int 10h
  86.   end;
  87. end.
  88.