返回
{***************************************************************}
{***               FVision Unit Version1.0                   ***}
{***                    蓝蚂蚁工作室                         ***}
{***************************************************************}
{***                  VGA ModeX支持单元                      ***}
{***************************************************************}
Unit Modex;
Interface
    { Mode Setting Routines }

Function SET_VGA_MODEX (Mode,MaxXpos,MaxYpos,Pages : integer) : integer;
Function SET_MODEX (Mode:integer) : Integer;

    { Graphics Primitives }

Procedure CLEAR_VGA_SCREEN (Color:integer);
Procedure SET_POINT (Xpos,Ypos,Color : integer);
Function READ_POINT (Xpos,Ypos:integer) : integer;
Procedure FILL_BLOCK (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer);
Procedure DRAW_LINE (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer);

    { VGA DAC Routines }

Procedure SET_DAC_REGISTER (RegNo,Red,Green,Blue:integer);
Procedure GET_DAC_REGISTER (RegNo,Red,Green,Blue:integer);

    { Page and Window Control Routines }

Procedure SET_ACTIVE_PAGE (PageNo:integer);
Function GET_ACTIVE_PAGE : integer;
Procedure SET_DISPLAY_PAGE (PageNo:integer);
Function GET_DISPLAY_PAGE : integer;
Procedure SET_WINDOW (DisplayPage,XOffset,YOffset : integer);
Function GET_X_OFFSET : integer;
Function GET_Y_OFFSET : integer;
Procedure SYNC_DISPLAY;

    { Text Display Routines }

Procedure GPRINTC (CharNum,Xpos,Ypos,ColorF,ColorB:integer);
Procedure TGPRINTC ( CharNum,Xpos,Ypos,ColorF : integer);
Procedure PRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF,ColorB:integer);
Procedure TPRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF:integer);
Procedure SET_DISPLAY_FONT (Var FontData;FontNumber:integer);

    { Sprite and VGA memory -> Vga memory Copy Routines }

Procedure DRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer);
Procedure TDRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer);
Procedure COPY_PAGE (SourcePage,DestPage:integer);
Procedure COPY_BITMAP (SourcePage,X1,Y1,X2,Y2,DestPage,DestX1,DestY1:integer);


Procedure CloseGraph;
Procedure Print_Text(s : string; X,Y,BColor,FColor : integer);
Procedure TPrint_Text(s : string; X,Y,Color : integer);



Implementation
{$L modex.obj}        { This file is the external ModeX Library .OBJ }
{$F+}

    { Mode Setting Routines }

Function SET_VGA_MODEX (Mode,MaxXpos,MaxYpos,Pages : integer) : integer; external;
Function SET_MODEX (Mode:integer) : Integer; external;

    { Graphics Primitives }

Procedure CLEAR_VGA_SCREEN (Color:integer); external;
Procedure SET_POINT (Xpos,Ypos,Color : integer); external;
Function READ_POINT (Xpos,Ypos:integer) : integer; external;
Procedure FILL_BLOCK (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer); external;
Procedure DRAW_LINE (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer); external;

    { VGA DAC Routines }

Procedure SET_DAC_REGISTER (RegNo,Red,Green,Blue:integer); external;
Procedure GET_DAC_REGISTER (RegNo,Red,Green,Blue:integer); external;

    { Page and Window Control Routines }

Procedure SET_ACTIVE_PAGE (PageNo:integer); external;
Function GET_ACTIVE_PAGE : integer; external;
Procedure SET_DISPLAY_PAGE (PageNo:integer); external;
Function GET_DISPLAY_PAGE : integer; external;
Procedure SET_WINDOW (DisplayPage,XOffset,YOffset : integer); external;
Function GET_X_OFFSET : integer; external;
Function GET_Y_OFFSET : integer; external;
Procedure SYNC_DISPLAY; external;

    { Text Display Routines }

Procedure GPRINTC (CharNum,Xpos,Ypos,ColorF,ColorB:integer); external;
Procedure TGPRINTC ( CharNum,Xpos,Ypos,ColorF : integer); external;
Procedure PRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF,ColorB:integer); external;
Procedure TPRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF:integer); external;
Procedure SET_DISPLAY_FONT (Var FontData;FontNumber:integer); external;

    { Sprite and VGA memory -> Vga memory Copy Routines }

Procedure DRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer); external;
Procedure TDRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer); external;
Procedure COPY_PAGE (SourcePage,DestPage:integer); external;
Procedure COPY_BITMAP (SourcePage,X1,Y1,X2,Y2,DestPage,DestX1,DestY1:integer); external;

{$F-}

Procedure CloseGraph;assembler;
Asm
  mov ah,0
  mov al,3
  int 10h
end;

    { Routine to Print a PASCAL string using Print_Str }

Procedure Print_Text(s : string; X,Y,BColor,FColor : integer);
Var
  s1 : Array[1..135] of Char;
  i : byte;
Begin
  For i := 1 to Length(s) DO
    s1[i] := s[i];
  Print_Str(s1,Length(s),X,Y,BColor,FColor);
End;

    { Routine to Transparently Print a PASCAL string using TPrint_Str }

Procedure TPrint_Text(s : string; X,Y,Color : integer);
Var
  s1 : Array[1..135] of Char;
  i : byte;
Begin
  For i := 1 to Length(s) DO
    s1[i] := s[i];
  TPrint_Str(s1,Length(s),X,Y,Color);
End;


end.