Metropoli BBS
VIEWER: drivers.pp MODE: TEXT (ASCII)
{****************************************************************************
                     This is a source file of Free Vision

                      Copyright (c) 1996 by FP Klaempfl
 ****************************************************************************}
{$E-}
unit drivers;

  interface

    uses
       objects;

    const
       kbctrla = 1;
       kbctrlb = 2;
       kbctrlc = 3;
       kbctrld = 4;
       kbctrle = 5;
       kbctrlf = 6;
       kbctrlg = 7;
       kbback = 8;
       kbctrlh = 8;
       kbtab = 9;
       kbctrli = 9;
       kbctrlj = 10;
       kbctrlk = 11;
       kbctrll = 12;
       kbreturn = 13;
       kbctrlm = 13;
       kbctrln = 14;
       kbctrlo = 15;
       kbctrlp = 16;
       kbctrlq = 17;
       kbctrlr = 18;
       kbctrls = 19;
       kbctrlt = 20;
       kbctrlu = 21;
       kbctrlv = 22;
       kbctrlw = 23;
       kbctrlx = 24;
       kbctrly = 25;
       kbctrlz = 26;
       kbesc = 27;
       kbshifttab = 271;
       kbaltq = 272;
       kbaltw = 273;
       kbalte = 274;
       kbaltr = 275;
       kbaltt = 276;
       kbalty = 277;
       kbaltu = 278;
       kbalti = 279;
       kbalto = 280;
       kbaltp = 281;
       kbalta = 286;
       kbalts = 287;
       kbaltd = 288;
       kbaltf = 289;
       kbaltg = 290;
       kbalth = 291;
       kbaltj = 292;
       kbaltk = 293;
       kbaltl = 294;
       kbaltz = 300;
       kbaltx = 301;
       kbaltc = 302;
       kbaltv = 303;
       kbaltb = 304;
       kbaltn = 305;
       kbaltm = 306;
       kbf1 = 315;
       kbf2 = 316;
       kbf3 = 317;
       kbf4 = 318;
       kbf5 = 319;
       kbf6 = 320;
       kbf7 = 321;
       kbf8 = 322;
       kbf9 = 323;
       kbf10 = 324;
       kbpos1 = 327;
       kbup = 328;
       kbpageup = 329;
       kbleft = 331;
       kbright = 333;
       kbend = 335;
       kbdown = 336;
       kbpagedown = 337;
       kbins = 338;
       kbdel = 339;
       kbshiftf1 = 340;
       kbshiftf2 = 341;
       kbshiftf3 = 342;
       kbshiftf4 = 343;
       kbshiftf5 = 344;
       kbshiftf6 = 345;
       kbshiftf7 = 346;
       kbshiftf8 = 347;
       kbshiftf9 = 348;
       kbshiftf10 = 349;
       kbctrlf1 = 350;
       kbctrlf2 = 351;
       kbctrlf3 = 352;
       kbctrlf4 = 353;
       kbctrlf5 = 354;
       kbctrlf6 = 355;
       kbctrlf7 = 356;
       kbctrlf8 = 357;
       kbctrlf9 = 358;
       kbctrlf10 = 359;
       kbaltf1 = 360;
       kbaltf2 = 361;
       kbaltf3 = 362;
       kbaltf4 = 363;
       kbaltf5 = 364;
       kbaltf6 = 365;
       kbaltf7 = 366;
       kbaltf8 = 367;
       kbaltf9 = 368;
       kbaltf10 = 369;
       kbctrlprtsc = 370;
       kbctrlleft = 371;
       kbctrlright = 372;
       kbctrlend = 373;
       kbctrlpagedown = 374;
       kbctrlpos1 = 375;
       kbalt1 = 376;
       kbalt2 = 377;
       kbalt3 = 378;
       kbalt4 = 379;
       kbalt5 = 380;
       kbalt6 = 381;
       kbalt7 = 382;
       kbalt8 = 383;
       kbalt9 = 384;
       kbalt10 = 385;
       kbctrlpageup = 387;
       kbf11 = 389;
       kbf12 = 390;
       kbshiftf11 = 391;
       kbshiftf12 = 392;
       kbctrlf11 = 393;
       kbctrlf12 = 394;
       kbaltf11 = 395;
       kbaltf12 = 396;

       evmousedown = $1;
       evmouseup = $2;
       evmousemove = $4;
       evmouseauto = $8;
       evkeydown = $10;
       evcommand = $100;
       evbroadcast = $200;

       
       evnothing = $0;
       evmouse = $f;
       evkeyboard = $10;
       evmessage = $ff00;

       mbleftbutton = $1;
       mbrightbutton = $2;

    type
       pevent = ^tevent;

       tevent = record
          case what : word of
             evnothing : ();
             evmouse : (buttons : byte;double : boolean;where : tpoint);
             evkeydown : (case integer of
                             0 : (keycode : word);
                             1 : (charcode : char;scancode : byte)
                         );
              evmessage : (case word of
                              0 : (infoptr : pointer);
                              1 : (infolong : longint);
                              2 : (infoword : word);
                              3 : (infoint : integer);
                              4 : (infobyte : byte);
                              5 : (infochar : char);
              );
       end;

       procedure initevents;
       procedure doneevents;
       procedure showmouse;
       procedure hidemouse;
       procedure getmousevent(var event : tevent);
       procedure getkeyevent(var event : tevent);
       function getshiftstate : byte;

       const
          smbw80 = 2;
          smco80 = 3;
          smmono = 7;
          smfont8x8 = $100;

          startupmode : word = $ffff;

          { mouse: }
          buttoncount : byte = 0;
          mousevents : boolean = false;
          mousereverse : boolean = false;
          doubledelay : word = 8;
          repeatdelay : word = 8;

       var
          screenmode : word;
          screenwidth : word;
          screenheight : word;
          hiresscreen : boolean;

          { never used }
          checksnow : boolean;

          { is only used by DOS }
          screenbuffer : pointer;

          cursorlines : word;

          { mouse: }
          mouseintflags : byte;
          mousebuttons : byte;
          mousewhere : tpoint;

       procedure initvideo;
       procedure donevideo;
       procedure setvideomode(mode : word);
       procedure clearscreen;

       
  implementation
  
    procedure initevents;

      begin
         {!!!!!}
      end;

    procedure doneevents;

      begin
         {!!!!!}
      end;

    procedure showmouse;

      begin
         {!!!!!}
      end;

    procedure hidemouse;

      begin
         {!!!!!}
      end;

    procedure getmousevent(var event : tevent);

      begin
         {!!!!!}
      end;

    procedure getkeyevent(var event : tevent);

      begin
         {!!!!!}
      end;

    function getshiftstate : byte;

      begin
         {!!!!!}
      end;

    procedure initvideo;

      begin
         {!!!!!}
      end;

    procedure donevideo;

      begin
         {!!!!!}
      end;

    procedure setvideomode(mode : word);

      begin
         {!!!!!}
      end;

    procedure clearscreen;

      begin
         {!!!!!}
      end;
end.
[ RETURN TO DIRECTORY ]